最近、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' );
そりや、オブジェクトにアクセスするやつでしょうという事でした。