web-dev-qa-db-ja.com

CPT-archive.phpのページあたりの投稿数を変更し、これまでに20〜30個のコードチャンクを試しました

CPTの映画レビューアーカイブページに表示される投稿の数を変更しようとしており、約20〜30種類のバリエーション(およびいくつかのプラグインさえ)を試しましたが、うまくいきませんでした。それは5つの投稿で立ち往生です。10を持っていることは知っていますが、ページネーションもありません。更新:それを修正しました。

私が試したほとんどのバリエーションは次のようになります

function wpd_testimonials_query( $query ){
    if( ! is_admin()
        && $query->is_post_type_archive( 'reviews' )
        && $query->is_main_query() ){
            $query->set( 'posts_per_page', 15 );
    }
}
add_action( 'pre_get_posts', 'wpd_testimonials_query' );

これをfunctions.phpに追加しても何も変わりません。

これまでの設定:functions.phpとそのアーカイブページのカスタム投稿type-archive.phpを持つ子テーマは、標準のwordpressループを実行します

if (have_posts()) : while (have_posts()) : the_post(); ?>

どんな助けも大歓迎です!

更新2:数を5から15に変更しました。これは、私が行き詰まっているものに変更しようとしているように見えたので混乱していたためです。

1
Philip Aarseth

@ Andrew (Andrewに感謝!)によって提案されたクエリモニターを使用して、関数で設定されたすべてをオーバーライドする小さなテーマを親テーマで見つけました。

wordpressが子テーマfunctions.phpを最初に読み込むmyfunction{ $query->set( 'posts_per_page', 15 ); }を見つけました

後でロードしたとき

lameparentfunction{ $query->set( 'posts_per_page', 5 ); }それは私が行った変更を元に戻しました。

1
Philip Aarseth

wpd_testimonials_query関数は、次の行でクエリを5つの投稿に制限しています:

$query->set( 'posts_per_page', 5 );

この数を10、15、20に変更すると、クエリはページあたりの投稿数に制限されます。

この行を削除し、posts_per_pageを設定しない場合、デフォルト値の10が使用されます。このデフォルト値は、[設定]> [読み取り]オプションページのブログページの最大表示オプションで更新でき、この値はサイト全体のすべてのアーカイブページに適用されます。

また、複数の関数がpre_get_postsフックで実行されている場合は、より高い優先度で関数を呼び出す価値があります。

add_action( 'pre_get_posts', 'wpd_testimonials_query', 1, 999 );

0
Andrew