WordPress模糊搜索功能

    • 老白
      楼主

      WordPress自带的搜索有点拉垮,在网上找到的两种模糊搜索都不能用,有没有大佬能改良一下(纯自嗨)

      1.php分词搜索

      原文: https://codeantenna.com/a/ykr0DjsCsh 

      <?php header("Content-type:text/html;charset=utf-8"); $keywords = "什么是快乐星球?"; for ($i=0; $i <= mb_strlen($keywords); $i++) { // 将关键词的第一个字分割掉 $a = mb_substr($keywords,$i,mb_strlen($keywords),'utf-8'); // 提取每一段关键词的前2个字作为新的关键词,每个关键词进行一次查询,将查询结果加入数组 // 最后返回数组就是最终的查询结果 $b = mb_substr($a,0,2,'utf-8'); echo $b."<br/>"; } ?> 

      2.wordpress模糊搜索功能修改

      原文: https://www.zhaokeli.com/article/1570.html 

      说明:搜索方式为:如“js正则”这个关键字 它会搜索标题中包含这个四个字的文章不管这四个字是不是在一起。

      ////////////////////修改为模糊搜索功能////////////////////////////
      add_filter( 'posts_search','wp_custom_search' );
      function wp_custom_search($search){
          $s=get_query_var('s');
          if(!$s)return $search;//非搜索,直接返回。
         $s=get_query_var('s'); 
         //分解搜索关键字
         $s_arr=mbStrSplit($s,1);
         $s='';
      foreach($s_arr as $a):
      $s.="%".$a;
      endforeach;
          $search = "AND (bk_posts.post_title LIKE '{$s}%')";
      	         //  OR (bk_posts.post_content LIKE '{$s}%') 	   
      			  // AND (bk_posts.post_password = '')";
          return $search;
      }
      function mbStrSplit($string, $len=1) {
          $start = 0;
          $strlen = mb_strlen($string);
          while ($strlen) {
              $array[] = mb_substr($string,$start,$len,"utf8");
              $string = mb_substr($string, $len, $strlen,"utf8");
              $strlen = mb_strlen($string);
          }
          return $array;
      }
      ///////////////////////////////////////////////////////////////////////////

  • 孙锡源
    管理员

    装 elasticpress

  • 正在查看 1 条回复
    • 哎呀,回复话题必需登录。

    加入 LitePress 论坛 ,参与知识分享与交流
    登录 注册 进行评论
    立即加入