Bagaimana untuk menukar bilangan siaran setiap halaman secara dinamik dalam WordPress
P粉256487077
P粉256487077 2023-09-02 09:13:54
0
1
422
<p>Saya ingin menukar bilangan catatan yang dipaparkan pada halaman tertentu pada tapak WordPress saya. </p> <p>Saya menjumpai coretan kod berikut di sini: </p> <pre class="brush:php;toolbar:false;">$postsPage = $settings["postspage"]; query_posts('posts_per_page='.$postsPage);</pra> <p>Panggil sebelum ini <kod>jika (have_posts()) manakala (have_posts()) the_post()</code></p> <p>Saya sangat baru dengan php, tetapi apa yang saya cuba ialah ini</p> <pre class="brush:php;toolbar:false;">... jika ( is_front_page()) { $postsPage = $settings["postspage"] + 1; }elseif ( is_tag()) { $postsPage = $settings["postspage"] - 2; } lain { $postsPage = $settings["postspage"]; } query_posts('posts_per_page='.$postsPage); ...</pra> <p>Tetapi malangnya ia tidak berfungsi. Sebaliknya, ia hanya mengembalikan 1 siaran dari halaman utama dan bukannya 5 siaran + 1 set dalam menu WP. Saya boleh hardcode nilai yang diingini seperti $postPage = 6; Atas sebab tertentu saya tidak boleh menambah/menolak apa-apa daripada nilai yang diberikan oleh <code>$settings["postspage"]</code>. Ia juga berfungsi jika saya tidak menukar nilai (klausa lain). Apa yang saya terlepas? </p> <p>Saya telah cuba menukar nilai <code>$settings["postspage"]</code> kepada integer kerana saya fikir ia mungkin dikembalikan sebagai rentetan. Saya menggunakan: <kod>$postsPage = (int)$settings["postspage"] + 1;</code> atau <code>$postsPage = intval($settings["postspage"]) + 1;< ;/code>Tetapi tidak berjaya. Oleh kerana saya tidak begitu biasa dengan fungsi wordpress dan pembolehubahnya, saya sedang mencari sebab mengapa saya tidak boleh mengubah suai bilangan siaran. Saya akan menghargai sebarang petua! </p>
P粉256487077
P粉256487077

membalas semua(1)
P粉153503989

Tidak jelas di mana anda meletakkan kod ini dan cara mencarinya $settings, tetapi ia sepatutnya berfungsi.

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan