現在のクエリがメインクエリかどうかを判定します。
is_main_query()なし。
戻り値(返す値):真偽値(メインクエリならtrue、そうでなければfalse)
<?php if (is_main_query()) {
// メインクエリの場合の処理
} ?>下記のコードはカスタム投稿タイプnewsのアーカイブページにおいて、1ページあたりの表示件数を8件にするコードです(functions.phpに記述)。2~4行目の処理は、現在の表示画面が管理画面の場合(is_admin())、あるいは現在の処理がメインクエリ以外の場合(! $query->is_main_query())はreturnを返し、即時処理を終了しています。条件がfalseでreturnを返さない場合、5行目以降を実行し、クエリがカスタム投稿タイプnewsのアーカイブページの場合($query->is_post_type_archive('news'))に1ページあたりの表示件数を8件にしています。
<?php
function news_posts($query) {
if (is_admin() || ! $query->is_main_query()) {
return;
}
if ($query->is_post_type_archive('news')) {
$query->set('posts_per_page', '8');
return;
}
}
add_action('pre_get_posts', 'news_posts');
?>※当サイトでは初期値とデフォルト値の言葉の定義を区別せず、原則統一して初期値を採用しています。