pre_get_posts Action主要用来修改主查询,经常在需要修改主文章查询时使用,可以让我们不用创建自定义查询来得到我们需要的文章内容。
parameters
该Action只有一个参数,就是通过引用传递的$wp_query 对象。
usage example
下面是几个使用示例,可以帮我我们快速了解 pre_get_posts Action 的使用方法。
在首页文章中排除ID位7、11 的文章。
add_action( 'pre_get_posts', function ($query) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'post__not_in', array( 7, 11 ) );
}
} );
在搜索结果中排除页面、只搜索文章内容。
add_action( 'pre_get_posts', function ($query) {
if ( ! is_admin() && $query->is_main_query() ) {
if ( $query->is_search ) {
$query->set( 'post_type', 'post' );
}
}
} );