阻止作者个人资料页显示在搜索结果中

时间:2017-04-25 作者:rmmoul

客户有一个带有用户目录的网站,他们希望将用户的作者页面从网站搜索中排除,这样,如果用户搜索“smith”,他们就不会得到带有“smith”的页面以及指向John smith用户档案的链接。

我已将以下代码添加到函数文件中,据说该文件将搜索结果仅限于帖子和页面:

add_filter(\'pre_get_posts\', \'SearchFilter\');
function SearchFilter($query){
    if($query->is_search){
        $query->set(\'post_type\', array(\'post\', \'page\'));
    }
    return $query;
}
不过,用户配置文件仍会显示在搜索结果中。我还回显了全局$wp\\u查询,看到正在设置帖子类型,但仍会显示用户类型为post\\u(不是实际的帖子类型)的作者页面。

您可以在此图像中看到,post\\u type设置为posts和page:

page and post are set但在这里,您可以看到post\\u类型的用户仍被拉入搜索结果:

user post type still being shown

我应该如何将用户排除在搜索之外?

更新:我使用下面的代码输出了所有注册的帖子类型,以确保“user”不在列表中。

add_action(\'init\', \'update_my_custom_type\', 99);
function update_my_custom_type(){
    global $wp_post_types;
    print_r($wp_post_types);
}

1 个回复
最合适的回答,由SO网友:rmmoul 整理而成

我追踪到了一个插件“Relevanssi Premium Search Options”,客户端在其网站上使用该插件,并将其隐藏在选项中,用于将用户包括在搜索中。

相关推荐

Change searched term

因此,我正在尝试设置一个搜索表单,其中实际搜索的词与用户输入的词不同。具体来说,我需要删除搜索词中的任何破折号。例如,假设用户输入“7-18”。搜索实际需要查询的是“718”。我在想pre_get_posts 也许是一种方式,但我不知道如何去写它。类似于function alter_query($query) { $unedit = the_search_query(); $edited = str_replace(\"-\",\"\",$unedit); the_sea