しーぼーデザイン since 2003

blog ブログ

WordPress 特定カテゴリーの表示件数設定

2014.04.20

一般的に表示件数をコントロールする場合はダッシュボードで表示件数を設定するか

<?php query_posts();?>

で設定する。

しかし…ブログページ1本だったら、前者でOK。
ブログの他に商品ページや実績ページなんかを投稿ページスタイル(カスタム投稿)で作る場合、要はブログ機能を複数使う場合はダッシュボードの設定だとブログと商品・実績ページの全てに反映されてしまう。
後者の

<?php query_posts();?>

の場合はページ送りが正常に行われない。(なぜか、2ページ目以降にも1ページの内容が反映されてしまう)

例えば、ブログのカテゴリーページ(アーカイブ含む)は表示件数を8件にしたいが、商品ページはサムネイルで32件表示したいなんてケースに出くわす可能性は高い。そんな時はどうすればいいの?

functions.phpに以下を書き込むと特定のカテゴリーの表示件数を設定できる!

<?php
add_action( 'pre_get_posts', 'my_pre_get_posts' );
function my_pre_get_posts( $query ) {
  if ( $query->is_main_query() && ! is_admin() ) {
    if ( is_category()) { // カスタム投稿の場合はis_tax、カテゴリー指定は('5')
      $query->set( 'posts_per_page', 12 ); // 件数指定
    }
  }
}
?>

でOK!
上手くいきました!

補足
query_postsの場合も

<?php query_posts('2&paged='.$paged);?>

とやると、ページ送りが正常になるらしい
※カスタム投稿の場合はまた違う設定のようなので未テスト

関連記事

Archive

Category

Recent Entry