转自:http://www.xuxiaoke.com/wpquestion/234.html,略有删改。

此处使用了filter: pre_get_posts , 因此,也只对使用get_posts查询文章时有效。

wordpress默认都是使用get_posts查询文章的。因此,大多时候也都是有效的,不过有些主题和插件使用了WP_Query查询文章,这时候就不灵了。

排除特定 ID 的文章或者页面

1
2
3
4
5
6
7
8
//搜索结果排除特定 ID 的文章或页面
function Bing_search_filter_id($query) {
    if ( !$query->is_admin && $query->is_search) {
        $query->set('post__not_in', array(13,14));//需要排除的文章、页面 ID
    }
    return $query;
}
add_filter('pre_get_posts','Bing_search_filter_id');

排除特定分类下所有文章

1
2
3
4
5
6
7
8
//搜索结果排除特定分类下所有文章
function Bing_search_filter_category( $query) {
    if ( !$query->is_admin && $query->is_search) {
        $query->set('cat','-11,-13'); //分类的 ID,加负号表示排除;直接写ID,则表示只在该 ID 中搜索
    }
    return $query;
}
add_filter('pre_get_posts','Bing_search_filter_category');

搜索结果排除所有页面

1
2
3
4
5
6
7
8
//搜索结果排除所有页面
function search_filter_page($query) {
    if ($query->is_search) {
        $query->set('post_type', 'post');
    }
    return $query;
}
add_filter('pre_get_posts','search_filter_page');

版权声明:部分文章、图片等内容为用户发布或互联网整理而来,仅供学习参考。如有侵犯您的版权,请联系我们,将立刻删除。