最近、pre_get_post と is_main_query()を組み合わせたコードをよく見かけます。
書いてみたものの、コードに違和感
自分で書いたもの、
add_action( 'pre_get_posts', 'category_display_per_3' );
function category_display_per_3( ) {
if ( is_main_query() and is_category() ) {
set_query_var( 'posts_per_page', 3 );
}
}
偉い人が書いたもの
Function Reference/is main query
add_action( 'pre_get_posts', 'foo_modify_query_exclude_category' );
function foo_modify_query_exclude_category( $query ) {
if ( ! is_admin() && $query->is_main_query() && ! $query->get( 'cat' ) )
$query->set( 'cat', '-5' );
}
Action Reference/pre get posts
function exclude_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'cat', '-1,-1347' );
}
}
add_action( 'pre_get_posts', 'exclude_category' );
そりや、オブジェクトにアクセスするやつでしょうという事でした。