cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menukar bilangan siaran setiap halaman secara dinamik dalam WordPress

<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粉256487077P粉256487077457 hari yang lalu424

membalas semua(1)saya akan balas

  • P粉153503989

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

    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.

    balas
    0
  • Batalbalas