如果原始查询未提供结果,则修改搜索查询

时间:2014-05-23 作者:MikO

如果执行的查询没有返回任何结果,我正在寻找一种方法来修改搜索查询。

比如说,我正在寻找“开放时间”,所以我转到以下URL:

http://mysite.com?s=Opening+times
现在,在我的search.php 我想检查该查询是否没有结果,在这种情况下,我想使用不同的术语执行新的查询,而不需要用户执行任何必需的操作。

类似这样:

global $wp_query;

$total_results = $wp_query->found_posts;

if ( $total_results == 0 ) {
    // Create a new query with the terms \'Find Us\'
}

// Display results (either those for the \'Opening times\' query or for the \'Find Us\' one if the former didn\'t return any result)
有没有简单的方法可以做到这一点?

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

您应该在if中创建一个自定义查询。

if ( $total_results == 0 ) {
    // Create a new query with the terms \'Find Us\'

$query = new Wp_query(\'s=Find Us\');
   if ($query->have_posts()):
                while ($query->have_posts()):$query->the_post();
                //whatever you want to do with the result
                endwhile;
            endif;
       wp_reset_postdata();
}
您可以参考Creating a search pageWp_query class referrence 了解更多详细信息。

SO网友:Todd Rowan

修改标头模板文件中的代码:

if (is_search() && !have_posts())
{
   header(\'Location: http://mysite.com?s=Find+us\');
   exit;
}
只要确保重定向的查询总是有结果,否则就必须采取其他措施以避免陷入无休止的重定向循环。

如果您只想在搜索中处理它。php模板页面本身,请阅读Wordpress文档中描述The Loop. 它们显示了在单个页面中处理多个查询的多种不同方式。

结束

相关推荐

分页不使用WP_QUERY(创建链接但不创建页面)

下面的循环获取相关类别中的所有帖子。它确实会生成分页URL,但它不会将我带到那里(它只是重定向回主页)。有人知道为什么吗?$paged = (get_query_var(\'page\')) ? get_query_var(\'page\') : 1; $category_cat_args = array( \'category_name\' => $current_category, \'posts_per_page\' => 2,&#