是否阻止在使用Google CSE时执行搜索查询?

时间:2014-11-11 作者:MadtownLems

我正在使用一个定制的谷歌搜索引擎在我的网站上显示结果,而不是WordPress的内置搜索功能。我通过修改主题的搜索来实现这一点。php模板,用来自Google的代码替换标准循环。一切都很顺利。

然而,WordPress仍然在浪费时间/精力执行数据库的默认搜索,即使结果永远不会被使用。我是否可以阻止WordPress执行此默认搜索?

3 个回复
SO网友:Shaoyi Lai

你也有同样的问题,刚在stackexchange上发现。在函数中输入以下代码。主题中的php。

function _cancel_query( $query ) {
    if ( !is_admin() && !is_feed() && is_search() ) {
        $query = false;
    }
    return $query;
}
add_action( \'posts_request\', \'_cancel_query\' );
这是source

SO网友:rfair404

有许多用于禁用搜索的教程-请参阅http://wpzine.com/disable-wordpress-search/

基本上,它归结为取消查询变量的设置-这里是它的要点。。。

function disable_search( $query, $error = true ) {
  if ( is_search() ) {
  $query->is_search = false;
  $query->query_vars[s] = false;
  $query->query[s] = false;
  if ( $error == true )
    $query->is_404 = true;
  }
}
add_action( \'parse_query\', \'disable_search\' );
也就是说,不知道这会不会影响你的谷歌搜索实现。

SO网友:karpstrucking

您应该可以通过pre_get_posts 过滤器,在执行实际查询之前运行。

add_filter( \'pre_get_posts\', \'wpse168169\' );
function wpse168169( $query ) {
  if ( ( ! is_admin() ) && ( $query->is_main_query() ) && ( $query->is_search ) ) {
    // modify $query here to suit your needs; unset( $query ) maybe?
  }
  return $query;
}

结束

相关推荐

Earch.php中的搜索结果不正确--在earch.php中使用`Define(‘BodyID’,‘Search’);the_post();`触发问题

我有一个问题,在搜索结果中没有找到页面标题。我已将问题缩小到以下搜索范围。php在我的自定义主题中。define(\'BodyID\', \'search\'); the_post();当我包括上面这一行时,搜索结果中不会出现页面标题,当我去掉这些行并运行搜索查询时,我会得到预期的搜索结果。知道为什么这会中断搜索吗?搜索的完整代码。php如下所示。<?php define(\'BodyID\', \'search\'); the_post(); include(TEMPLATEPAT