suchen

Heim  >  Fragen und Antworten  >  Hauptteil

So ändern Sie die Anzahl der Beiträge pro Seite in WordPress dynamisch

<p>Ich möchte die Anzahl der auf bestimmten Seiten meiner WordPress-Site angezeigten Beiträge ändern. </p> <p>Ich habe hier den folgenden Codeausschnitt gefunden: </p> <pre class="brush:php;toolbar:false;">$postsPage = $settings["postspage"]; query_posts('posts_per_page='.$postsPage);</pre> <p>Vorher anrufen <code>if (have_posts()) while (have_posts()) the_post()</code></p> <p>Ich bin sehr neu in PHP, aber was ich versuche, ist Folgendes</p> <pre class="brush:php;toolbar:false;">... if ( is_front_page()) { $postsPage = $settings["postspage"] + 1; }elseif ( is_tag()) { $postsPage = $settings["postspage"] - 2; } anders { $postsPage = $settings["postspage"]; } query_posts('posts_per_page='.$postsPage); ...</pre> <p>Aber leider funktioniert es nicht. Stattdessen wird nur 1 Beitrag von der Startseite zurückgegeben, statt der im WP-Menü festgelegten 5 Beiträge + 1. Ich kann den gewünschten Wert wie $postPage = 6; für is_front_page fest codieren und es funktioniert gut. Aus irgendeinem Grund kann ich nichts zu dem durch <code>$settings["postspage"]</code> angegebenen Wert hinzufügen/subtrahieren. Es funktioniert auch, wenn ich den Wert nicht ändere (else-Klausel). Was habe ich verpasst? </p> <p>Ich habe versucht, den Wert von <code>$settings["postspage"]</code> in eine Ganzzahl umzuwandeln, weil ich dachte, dass er als Zeichenfolge zurückgegeben werden könnte. Ich verwende: <code>$postsPage = (int)$settings["postspage"] + 1;</code> oder <code>$postsPage = intval($settings["postspage"]) + 1;< ;/code>Aber ohne Erfolg. Da ich mich mit WordPress-Funktionen und deren Variablen nicht so gut auskenne, habe ich nach dem Grund gesucht, warum ich die Anzahl der Beiträge nicht ändern kann. Ich würde mich über jeden Tipp freuen! </p>
P粉256487077P粉256487077546 Tage vor458

Antworte allen(1)Ich werde antworten

  • P粉153503989

    P粉1535039892023-09-03 00:44:13

    目前尚不清楚您将该代码放在哪里,以及如何找到 $settings,但这应该可行。

    add_action( 'pre_get_posts', 'alter_number_of_posts' );
    
    function alter_number_of_posts( $query ) {
    
        if ( !$query->is_main_query() ){
            return;
        }
    
        $posts_per_page = get_option( 'posts_per_page' );
    
        if ( is_front_page() ) {
            $query->set( 'posts_per_page', $posts_per_page + 1 );
            return;
        }
        if ( is_tag() ) {
            $query->set( 'posts_per_page', $posts_per_page - 2 );
            return;
        }
    }

    $query 通过引用传递,因此您对其所做的任何更改都将反映在全局查询对象中。您不需要返回它,这意味着您可以安全地从每个条件内的函数返回,而不是使用 elseif

    Antwort
    0
  • StornierenAntwort