web-dev-qa-db-ja.com

ページ数ごとの投稿数の変更

ワードプレスでは 設定 => 読み値 => ブログページはせいぜい [入力フィールド] 投稿

現時点では3ポストに設定しています。

私のインデックス、日付アーカイブ、タグアーカイブ、カテゴリアーカイブ、検索結果などで...ループとページングを使用するすべてのページで、1ページに3件の投稿が表示されます。

私の目標は、ページごとに結果の数を変えることができるようにすることです。私のインデックスに3つの投稿があるかもしれませんが、検索結果またはアーカイブでは、ページごとの結果の数が異なることを示しています。

これを行う方法はありますか?

12
JasonDavis

これはそれをします:(あなたのテーマのfunctions.phpに追加)

add_action( 'pre_get_posts',  'set_posts_per_page'  );
function set_posts_per_page( $query ) {

  global $wp_the_query;

  if ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_search() ) ) {
    $query->set( 'posts_per_page', 3 );
  }
  elseif ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_archive() ) ) {
    $query->set( 'posts_per_page', 5 );
  }
  // Etc..

  return $query;
}
20
Dave Romsey

上記の答えを改善する:フックpre_get_postsは参照によって取得されるので、global呼び出しやreturncallを必要としません。

add_action( 'pre_get_posts',  'set_posts_per_page'  );
function set_posts_per_page( $query ) {

  if ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_search() ) ) {
    $query->set( 'posts_per_page', 3 );
  }
  elseif ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_archive() ) ) {
    $query->set( 'posts_per_page', 5 );
  }
  // Etc..

}
0
Arts Fantasy