Wordpress:空帖子类型的搜索查询结果重定向,而不是转到搜索结果



我正在使用搜索&过滤器插件,用于过滤附加到自定义帖子类型(主题和位置)的两个自定义分类。我的一些用户正在使用"所有科目"&"所有位置"字段,希望在提交时重置为原始存档页面。当然,这会将Wordpress发送到搜索结果页面,因为它会导致一个空的搜索查询。看起来像这样:

http://www.example.com/?s=

这就是为什么我的情况与其他人不同,他们只是想要一条写着"找不到结果"的消息。与其让它进入搜索结果,我宁愿将我的用户重定向回他们运行此查询时所在的自定义帖子类型的存档页。看起来像这样的东西:

http://www.example.com/resources/

但这个问题还有另一层。我有两个自定义的帖子类型和两个自定义分类法。资源和培训。如果他们正在接受培训,我需要在一个空的搜索查询中将他们重定向到培训档案。如果它们在资源上,我需要将它们重定向到空搜索查询上的资源。

这可能吗?

要构建这个自定义重定向,您需要在INIT钩子中构建条件逻辑。它检查用户来自哪个页面,并将他重定向到相应的页面。

add_action('init','custom_redirector');
function custom_redirector(){
if (isset($_GET["s"]) and $_GET["s"]=='' and !empty($_SERVER['HTTP_REFERER'])){
if (strpos($_SERVER['HTTP_REFERER'],'resources')!==false){
header("location: ".home_url('/resources')); exit;
}
elseif (strpos($_SERVER['HTTP_REFERER'],'trainings')!==false){
header("location: ".home_url('/trainings')); exit;
}
}
}

当然,代码可能需要一些调整,特别是在"strpos($_SERVER['HTTP_REFERER'],'resources')"部分。你最好知道你的自定义帖子页面包含哪些可识别的插件。

最新更新