pre_get_postsを使って表示件数を変更する

NO IMAGE

WordPressで記事を取得する方法はいくつかありますが、取得するときには毎回DBに問い合わせるため無駄な問い合わせはできる限り減らしたほうがいいです。

よくnew WP_Query()で記事を取得したりしますが、その場合URLがリクエストされたときとテンプレートファイル内でWP_Query()を呼び出したときの合計2回のDBへの問い合わせが発生していることになります。

今回は'pre_get_posts'を使って最初の問い合わせの内容を変更するサンプルコードを書いてみます。

コード

function change_posts_per_page($query) {
 /* 管理画面,メインクエリに干渉しないために必須 */
if ( is_admin() || ! $query->is_main_query() ){
     return;
 }

 /* カテゴリーページの表示件数を5件にする */
 if ( $query->is_category() ) {
     $query->set( 'posts_per_page', '5' );
     return;
 }

}
add_action( 'pre_get_posts', 'change_posts_per_page' );

参考