wordpress搜索功能优化,实现模糊搜索
搜索功能是wordpress的硬伤,之前大家喜欢的google,百度站内搜索现在停了,正式开通要付费。以下代码通过拆分关键词可以适当优化wordpress搜索功能。
//修改为模糊搜索功能
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;
}
以上代码添加于functions.php文件中。
//修改为模糊搜索功能
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;
}
以上代码添加于functions.php文件中。
精选留言