web-dev-qa-db-ja.com

特定の投稿タイプのposts_per_page制限を削除することは可能ですか?

特定の投稿タイプについてposts_per_pageの制限を解除できるかどうかを知りたいです。

Archive.phpページでは、さまざまな投稿タイプを表示していますが、特定の「出版物」投稿タイプについては、すべての投稿を表示します。伝統的な "投稿"タイプに影響を与えずにこれを達成するにはどうすればよいですか?

3
VeeJay

pre_get_postsオブジェクトにアクセスするには、$queryアクションにフックします。

あなたのfunctions.phpの中にあなたのアクションフックを使うべきです。あなたの関数がどのように見えるかの例:

add_action( 'pre_get_posts', 'publications_archive_query' );
function publications_archive_query( $query ) {
  if ( !is_admin() && $query->is_main_query()) {
    if ( $query->get('post_type') === 'publications' ) {
      $query->set( 'posts_per_page', 5 );
    }
}

条件付きチェックを使用して、変更しているクエリを絞り込みます。

現在のクエリのpost_typeをチェックするための$query->get('post_type')

is_main_queryを使用して、クエリの変更をメインのクエリにのみ適用していることを確認してください。

さらに読み、より多くの例を見つけてください: https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

4
FFrewin