从特定页面父级搜索子页面

时间:2011-09-26 作者:dgwyer

有谁知道一种简单的方法可以将默认的WordPress搜索从搜索所有页面改为只搜索特定页面父级的子页面?

我知道您可以使用过滤器来更改是否搜索页面或帖子:

function SearchFilter($query) {
if ($query->is_search) {
    $query->set(\'post_type\', \'page\');
}
return $query;
}
add_filter(\'pre_get_posts\',\'SearchFilter\');
也许有一种方法可以在此处添加更多信息来指定特定的页面父级?

2 个回复
SO网友:Chip Bennett

我不知道这是否有效,但你不能参考post_parent 在查询参数中?

function SearchFilter($query) {
if ($query->is_search) {
    //$query->set(\'post_type\', \'page\');
    global $post;
    $query->set( \'post_parent\', $post->ID );
}
return $query;
}
add_filter(\'pre_get_posts\',\'SearchFilter\');
同样,完全未经测试。我不太熟悉使用$query->set().

SO网友:sba222

奇普的答案对我来说很好。(抱歉,我喜欢零声誉,因此无法投票或发表评论…)

实际上,我使用它只显示特定模板上的搜索结果:

function SearchFilter($query) {
    if ($query->is_search) {
        //$query->set(\'post_type\', \'page\');
        $query->set( \'meta_key\', \'_wp_page_template\' );
        $query->set( \'meta_value\', \'template-content.php\' );        
    }
    return $query;
}
add_filter(\'pre_get_posts\',\'SearchFilter\');

结束

相关推荐

GET_PAGES和NUMBER-无输出;无错误;

我正在尝试3 父页面中的页面(id为2035). 我正在使用wordpress 3.2.1。这是我的相关代码:<div id=\"videos\" class=\"contentLeft\"> <?php // get the three most recent videos (2035 is the video page) $recentVideos = get_pages(\'child_of=2035&number=3\');