So ändern Sie die Anzahl der Beiträge pro Seite in WordPress dynamisch
P粉256487077
P粉256487077 2023-09-02 09:13:54
0
1
428
<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粉256487077
P粉256487077

Antworte allen(1)
P粉153503989

目前尚不清楚您将该代码放在哪里,以及如何找到 $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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage