WordPress 搜索结果排除特定文章、页面和分类,或只显示特定分类内容

0

默认的 WordPress 搜索机制得出的结果页面,会包含站内的页面、文章等。最近在重新整理周良博客,会需要对搜索结果页呈现的内容做一些控制,排除我不希望被读者搜索到的内容。

站在效率的角度,我不太喜欢重复去制造轮子,就网寻了一些代码,本文纯属是给自己的备忘录。

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

//搜索结果排除特定 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');

排除特定分类下所有文章

//搜索结果排除特定分类下所有文章
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');

搜索结果排除所有页面

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

如果你有设计或者 WordPress 方面的项目需求,可以和我联系 Email:wwwzhouliang@gmail.com。

作者主页 邮箱 微博 腾讯微博 QQ Twitter Facebook Google+

Leave a Reply

您的邮箱不会公开,当您的评论有新的回复时,会通过您填写的邮箱向您发送评论内容。 Required fields are marked *

返回顶部