因此,我正在尝试设置一个搜索表单,其中实际搜索的词与用户输入的词不同。具体来说,我需要删除搜索词中的任何破折号。例如,假设用户输入“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(),还是因为它形成了一个循环,或者是因为其他原因。有什么想法?
 
                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\');