【WordPress】メインクエリを変更する
例えば特定のカスタム投稿タイプのアーカイブだけ表示件数を変更したいとか、条件を変更したいときに。
finctions.php にまとめて書けるからめっちゃ楽だね。
function custom_main_query( $query ) {
if ( is_admin() || !$query->is_main_query() ){
return;
}
//カスタム投稿タイプ「faq」のアーカイブは昇順で全件表示
if ( is_post_type_archive( 'faq' ) ) {
$query->set( 'posts_per_page', -1 );
$query->set( 'order', 'ASC' );
}
//アーカイブページに子ページを表示しない
if ( $query->is_archive() ) {
$query->set( 'post_parent', 0 );
return;
}
}
add_action( 'pre_get_posts', 'custom_main_query' );
カスタムフィールドを条件にすることも可能。
//カスタム投稿タイプ「event」でカスタムフィールド「event_date」が本日以降の記事を表示。
if ( $query->is_post_type_archive( 'event' ) ) {
$query->set( 'meta_query',
array(
'key' => 'event_date',
'value' => date( 'Ymd' ),
'compare' => '>='
)
);
return;
}