搜索结果仅为页面ID的帖子和子项

时间:2011-07-14 作者:Drew Baker

我试图让我的搜索结果只显示属于“新闻”类别或“工作”页面(ID=16)的子级的结果。

这就是我目前的情况:

    function SearchFilter($query) {
        if ($query->is_search) {
            $query->set(\'category_name\', \'news\');
            $query->set(\'post_parent\', \'16\');            

        }
        return $query;
    }

    add_filter(\'pre_get_posts\',\'SearchFilter\'); 
问题是,它只搜索属于“新闻”且父页面ID为“16”的帖子,这显然不是帖子。

那么,如何更好地优化搜索呢?我宁愿不使用插件,这就是我在这里的原因。

谢谢Drew

1 个回复
SO网友:Drew Baker

我唯一能找到答案的方法是建立一个ID列表,如下所示:

/*
* Hide some pages from search results
*/
function SearchFilter($query) {
    if ($query->is_search) {

        $exclude = \'18,20,12,22,132,76,81,78,84,91\';
        // Get all children of #18
        $pages = get_pages(\'post_parent=18\');
            foreach($pages as $child) {            
            $exclude .=  "," . $child->ID;
        }

        $query->set(\'post__not_in\', explode(",", $exclude));                        
    }
    return $query;
}

add_filter(\'pre_get_posts\',\'SearchFilter\'); 
您可以使用任何WP\\u查询参数来执行类似的操作(例如构建要包含的ID列表)。

结束

相关推荐

How to add pages to feed?

我想在我的RSS提要中包含页面。无论何时添加或编辑页面,我都希望它显示在提要中。我似乎在默认WordPress安装或默认(二十十)主题中找不到任何设置。我怎样才能做到这一点?我正在使用最新版本的WordPress(3.1.3)。