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;
}
///////////////////////////////////////////////////////////////////////////