Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在搜索词Wordpress search中省略复数(';s';)时,如何创建要忽略的单词数组_Php_Wordpress - Fatal编程技术网

Php 在搜索词Wordpress search中省略复数(';s';)时,如何创建要忽略的单词数组

Php 在搜索词Wordpress search中省略复数(';s';)时,如何创建要忽略的单词数组,php,wordpress,Php,Wordpress,我是一名代码新手,目前正在努力学习我能学到的一切。我编写了一些脚本,在wordpress中的搜索查询中省略了“s”。但是,我希望在某些单词上省略这个函数。我将如何创建阵列来执行此操作?谢谢 function mySearchFilterFunction($query) { if ( !is_admin() && $query->is_main_query() && $query->is_search) { $search_ter

我是一名代码新手,目前正在努力学习我能学到的一切。我编写了一些脚本,在wordpress中的搜索查询中省略了“s”。但是,我希望在某些单词上省略这个函数。我将如何创建阵列来执行此操作?谢谢

function mySearchFilterFunction($query) {
    if ( !is_admin() && $query->is_main_query() && $query->is_search) {
        $search_term = $query->get('s');
        if (substr($search_term, -1) == 's'){
            $search_term = substr($search_term, 0, -1);
        }
        $query->set('s', $search_term);
    }
}

add_action( 'pre_get_posts', 'mySearchFilterFunction');

对于任何希望在将来这样做的人。我解决了-我希望这有帮助!:)


你说的“在wordpress中的搜索查询中省略“s”是什么意思?从搜索词的末尾删除“s”并在末尾加上“s”,为了提高结果显示的质量,你需要首先将输入的搜索词拆分为单个“词”——首先,在任何空格字符处进行简单的分解都可以(这不适用于用户输入带有不同空格字符的搜索词的情况,但您可以在以后扩展该部分功能。)然后你可以循环这些单词,例如,使用
in_array
检查它们是否包含在给定单词的数组中。谢谢你的回答!不幸的是,我不是100%你的意思:我的两个想法是:1.创建一个要忽略的单词数组。因此,如果单词出现,我们希望删除S,如果单词在列表,我们不删除S。2.在数据库中有一个新表,管理员可以在其中添加单词,然后我们可以检查数据库中的单词,看看它是否存在,如果存在,允许它搜索该工作,如果不存在,则删除“S”我在上面的尝试不允许在功能中遗漏特定的单词,所以我希望能从代码的角度为创建的代码提供一个最好的添加内容的指南。
function mySearchFilterFunction($query) {
  if(!is_admin() && $query->is_main_query() && $query->is_search) {
     //### Words to skip
  $skip_words = array('diaries', 'stylus');

      //### Get the search term
  $search_term = trim(strtolower($query->get('s')));

    //### Check if the last letter of the search term is an S
    //### Also check to see if the word is in the skip word array
  if(substr($search_term, -1) == 's' && !in_array($search_term, $skip_words)){
      $search_term = substr($search_term, 0, -1);
  }

  //### Set the search term
  $query->set('s', $search_term);
  }
}