我不确定这样做是否明智,但这是可能的。
最简单的解决方法是检查你是否有帖子,如果没有,根据推荐人重定向
在代码顶部(调用get_header
) 添加
if ( !have_posts() ) {
if (isset($_SERVER[\'HTTP_REFERER\'])) {
wp_redirect(301,$_SERVER[\'HTTP_REFERER\']);
}
}
这是基于这样一种假设,即请求中会发送一个referer,根据浏览器配置,这种假设可能是错误的,而当站点使用SSL时,这种假设总是错误的。
有一种可能的替代解决方案,您可以更改搜索表单,将当前页面URL作为隐藏字段包含在内。
搜索表单如下所示
<form action="<?php echo get_option(\'siteurl\')?>" method="get">
<input name="s" type="text">
<input type="hidden" name="ref_url" value="<?php esc_url($_SERVER[\'REQUEST_URI\'])?>">
</form>
然后搜索页面顶部的代码将是
if ( !have_posts() ) {
if (isset($_GET[\'ref_url\'])) {
wp_redirect($_GET[\'ref_url\'],302);
}
} else if (isset($_GET[\'ref_url\'])) { // fix the URL
wp_redirect(remove_query_arg(\'ref_url\',$_SERVER[\'REQUEST_URI\']),301);
}
代码的第二部分是从URL中删除额外的参数,否则根据进行搜索的页面,同一搜索将有不同的URL。
**这不是一件聪明的事,因为人们习惯于搜索,但却找不到他们要找的东西,如果没有结果,就不习惯被重定向到任何其他地方。对于许多人来说,搜索表单似乎不起作用,你必须添加一些没有结果的通知。