未找到搜索结果时-停留在他们所在的页面

时间:2013-02-25 作者:Shimsham84

我目前有一个侧边栏,顶部有一个搜索表单。当用户键入关键字时,提交后,用户将进入一个页面,页面上显示搜索结果,每篇文章中都有与他们相关的帖子。

此时,如果找不到关键字,它们将被发送到一个页面,该页面显示标题“未找到任何内容”,并显示一条消息“抱歉,未找到任何内容,请重试”。

我想要的是,无论用户在哪个页面上(主页、分类页、单页等等),用户都可以留在该页面上,只需在导航顶部显示此标题和“未找到结果”信息。

这在某种程度上可能吗?我不是Wordpress方面的专家,所以如果答案很简单,我也没有把它说出来,我深表歉意!

谢谢

<?php get_header(); ?>
<?php if ( have_posts() ) : ?>
<?php get_template_part( \'nav\', \'above\' ); ?>
<h1 class="page-title">
<?php printf( __( \'Search Results for: %s\', \'blankslate\' ), \'<span>\' . get_search_query()  . \'</span>\' ); ?>
</h1>
<?php while ( have_posts() ) : the_post() ?>
<?php get_template_part( \'entry\' ); ?>
<?php get_sidebar(); ?>
<?php endwhile; ?>

<?php else : ?>
<?php get_template_part( \'nav\', \'above\' ); ?>
<h1 class="page-title">
<?php _e( \'Nothing Found\', \'blankslate\' ) ?>
</h1>
<p><?php _e( \'Sorry, nothing matched your search. Please try again.\', \'blankslate\' ); ?></p>
<?php get_sidebar(); ?>
<?php get_template_part( \'nav\', \'below\' ); ?>
<?php get_footer(); ?>
<?php endif; ?>

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

我不确定这样做是否明智,但这是可能的。

最简单的解决方法是检查你是否有帖子,如果没有,根据推荐人重定向

在代码顶部(调用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。

**这不是一件聪明的事,因为人们习惯于搜索,但却找不到他们要找的东西,如果没有结果,就不习惯被重定向到任何其他地方。对于许多人来说,搜索表单似乎不起作用,你必须添加一些没有结果的通知。

结束

相关推荐

Filter and Search

我正在我的网站上工作,这是一个基于WordPress的网站。这是一个winprizesonline的抽奖网站。com是我最受启发的网站。现在,我想在我的网站上进行类似该网站的动态搜索,但我不知道如何以及在何处添加代码。就像这里;http://www.winprizesonline.com/new/contests/ 您可以看到3个搜索框,排序方式:,条目:,下一条:我想要相同的搜索框,具有相同的过滤和搜索功能。任何人都知道它的代码,可以告诉我在我的网站上放在哪里。我正在为我的网站使用DirectoryPr