デザイン
2021.07.07
【WordPress】functions.phpでテンプレートごとに表示件数を変える
ワードプレスの記事一覧などで、表示件数指定やカテゴリーを限定する「<?php query_posts(‘category_name=〇〇〇&posts_per_page=20’); ?>」を指定するとページネーションが効かなくなることありませんか?
これを解消する方法はないかと調べていると、「functions.php」で表示件数を変更できるというのを発見したのでメモっておきます。
functions.phpに以下のコードを設定すればOKです。
/*===================================================================
*テンプレート、カスタム投稿タイプ・カスタムタクソノミーごとの表示件数を設定
===================================================================*/
add_action('pre_get_posts','my_pre_get_posts');
function my_pre_get_posts( $query ) {
// if(is_admin() || ! $query -> is_main_query()) return;
// if($query -> is_front_page()) { //フロントページ
// $query -> set('posts_per_page',10); //10件
// }
// if($query->is_home()){ // トップページ
// $query->set( 'posts_per_page',20); //20件
// }
// if($query->is_month()){ // 月別アーカイブ
// $query->set('posts_per_page',-1); // -1ですべて表示
// }
// if($query->is_year()){ //年別アーカイブ
// $query->set('posts_per_page',10); //10件
// }
// if($query->is_author()){ // 作成者アーカイブ
// $query->set('posts_per_page',10); // 10件
// }
// if($query->is_category()){ // カテゴリーアーカイブ
// $query->set('posts_per_page',10); // 10件
// }
//shoplistというカスタム投稿タイプのアーカイブページ
// if($query -> is_post_type_archive('shoplist')){
// $query -> set('posts_per_page',200); //200件
// $query -> set('order','ASC'); //昇順
// $query -> set('orderby', 'date'); //日
// }
//newscatというタクソノミーの一覧ページ
// if ($query -> is_tax('newscat')) {
// $query -> set('posts_per_page', 10); //10件
// $query -> set('order', 'DESC'); //降順
// $query -> set('orderby', 'date'); //日
// }
}
※コメントアウトしてあるので使う部分だけコメントアウトを外してもらえればと思います。
カテゴリーアーカイブなどでカテゴリーを指定したい場合は「if($query->is_category(‘スラッグ名’))」で指定してもらえればカテゴリーごとで件数指定することも可能になります。
まとめ
ページネーションが効かなくて悩んでいる人は、今回の方法を試してみてください。
注意点としては、上記方法で指定すると、別のページで違う件数で表示したいというのに対応できなくなりますので、いろいろなページで使うカテゴリーはやり方を考え直す必要があると思います。
この記事に関連するタグ
正しい効果測定は、正しい計測設定から!Googleアナリティクス設定項目チェックシート(無料)
リスティング・Googleアナリティクス・ホームページ・ランディングページなど
Webマーケティングのことなら何でもご相談ください
株式会社マイティーエースでは、様々なWeb広告・Webマーケティングなど
お客様に合ったご提案しています。
興味をお持ちいただけた方は、まずは気軽にご相談ください。