web-dev-qa-db-ja.com

カスタム分類テンプレートの1ページあたりの投稿数

このフィルタを使用して、カスタム税テンプレートに20の投稿を表示したいです。

function customize_customtaxonomy_archive_display ( $query ) {
    if ( ( $query->is_main_query()) && ( is_tax() ) ){
        $query->set( 'posts_per_page', '20' );
        $query->set( 'number_posts', '20' );
        $query->set( 'orderby', 'Rand' );
        return;

    }
}

//Hook the function

add_action( 'pre_get_posts', 'customize_customtaxonomy_archive_display' );

2に設定すると、2つの投稿が表示されます。 20に設定すると、12の投稿が表示されます。 34件の投稿がありますが、12件を超える投稿は表示されません。

問題は何でしょうか。

1
user998163

number_postspre_get_postsの有効なパラメータではありません、posts_per_pageを使用する必要があります

pre_get_postsはバックエンドクエリも変更するため、フロントエンドにいるのかバックエンドにいるのかをチェックするために、クエリにチェック(!is_admin())も含める必要があります。

コードを次のように書き換えます。

add_action( 'pre_get_posts', function ( $query ) 
{
    if (    !is_admin() 
         && $query->is_main_query() 
         && $query->is_tax() 
    ) {
        $query->set( 'posts_per_page', '20'   );
        $query->set( 'orderby',        'Rand' );
    }
});
2
Pieter Goosen