Change searched term

时间:2018-04-11 作者:Aaron McNatt

因此,我正在尝试设置一个搜索表单,其中实际搜索的词与用户输入的词不同。具体来说,我需要删除搜索词中的任何破折号。例如,假设用户输入“7-18”。搜索实际需要查询的是“718”。我在想

pre_get_posts
也许是一种方式,但我不知道如何去写它。类似于

function alter_query($query) {
$unedit = the_search_query();
$edited = str_replace("-","",$unedit);
the_search_query() = $edited;
}
add_action(\'pre_get_posts\',\'alter_query\');
获取输入的值,删除破折号,并在搜索表单中的新搜索查询中使用它。但它不起作用,我不知道这是因为不能用php设置\\u search\\u query(),还是因为它形成了一个循环,或者是因为其他原因。有什么想法?

1 个回复
SO网友:Johansson

这个pre_get_posts 过滤器是正确的选择。您可以检查您是否在搜索查询中,并根据需要对其进行更改。下面是一个示例:

function search_filter($query) {
  if ( !is_admin() && $query->is_main_query() ) {

    // Check if we are on a search page
    if ($query->is_search) {

      // Get the search query
      $search_term = get_search_query();

      // You can modify the search query here, and pass it to the query again.
      $search_term = str_replace( "-", "" , $search_term );

      $query->set( \'s\', $search_term  );

    }

  }

}

add_action(\'pre_get_posts\',\'search_filter\');

结束

相关推荐

为什么我的WordPress jQuery-AJAX调用不起作用?

您好,我目前正在开发wordpress应用程序。我已经能够完成应用程序所需的几乎所有内容。我甚至能够使用Jquery Ajax将数据插入到我的自定义数据库表中,并获得提交的背景反馈。但我现在的目标是根据下拉选择自动填充文本字段。我在网上读了几篇文章,我在这里看到了答案Why is my AJAX call not working? 但我仍然无法解决问题,以下是我的代码:/* Fetching file from the database*/ wp_enqueue_script(\'jquery\