×

Win主机下WordPress网站无法使用中文站内搜索问题解决

优畅主题 Wordpress主机 2016-12-13 20:56 5,223 0 条评论

有一些优畅客户,购买了优畅主题,发现自己的空间运行的时候,中文搜索不到。为了解决这个问题,优畅整理了一些方法分享给大家,希望能能起到一些帮助。

关于主题的使用,环境的配置是很重要,不会配置的可以付费请优畅代劳,如果可以会配置,那自然更好。

第一步: Win主机下,做好了伪静态,在WP博客的搜索框中输入中文关键词,出来的URL是类似这样的:

http://www.abc.com/?s=%ce%b1%be%b2%cc%ac
这样WP就不能返回正确的中文搜索结果。而我需要返回的正确搜索结果应该是这样的:http://www.abc.com/search/伪静态
既要有一个搜索的伪静态URL,也要让它支持中文。

首先我需要增加rewrite功能,把搜索结果URL变成“http://www.abc.com/search/关键词” 的形式

function redirect_search() {
	if (is_search() && !empty($_GET['s'])) {
		$keywords=urlencode( get_query_var('s') );	
		wp_redirect(home_url("/search/").$keywords); //这里也可以修改/search/,把返回结果变成任意字符串
		exit();
	}
}
add_action('template_redirect', 'redirect_search' );

这样搜索就有了类似伪静态的效果了,但是只能搜索英文和数字,搜索中文还不行。

第二步是让关键词支持中文,需要用到一条PHP编码转换的命令:

mb_convert_encoding( get_query_var('s'), "UTF-8", "GBK" );

结合起来就是这样,以下代码可以直接复制,添加到主题的function.php中:

function redirect_search() {
	if (is_search() && !empty($_GET['s'])) {
		$keywords=mb_convert_encoding( get_query_var('s'), "UTF-8", "GBK" );
		$keywords=urlencode( $keywords );	
		wp_redirect(home_url("/search/").$keywords);
		exit();
	}
}
add_action('template_redirect', 'redirect_search' );

添加完以上代码后,搜索的跳转已经支持中文了,但执行中文搜索还是找不到对应的结果,还需要做最后一部:
打开wp-includes/class-wp.php
查找代码

$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : '';

改成

$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK");

查找代码

list( $req_uri ) = explode( '?', $_SERVER['REQUEST_URI'] );

改成

list( $req_uri ) = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");

保存后覆盖原文件,网站的中文搜索就能正确执行了。


如果本文对你有帮助,你可以扫描右边的二维码打赏,谢谢支持
联系优畅:uctheme#qq.com (#改为@)
微信订阅号:优畅主题(uctheme)
官网淘宝店:http://uctheme.taobao.com
版权声明:版权归 优畅主题 所有,转载请注明出处!
转载请保留链接: https://www.uctheme.com/host/2234.html
谢谢支付宝打赏
谢谢微信打赏

品牌创立:2012-11-18优畅主题

优畅主题成立于2012年11月18日,专业Wordpress导购主题开发商,拥有多年Wordpress主题设计经验,专门为淘宝客和导购客站长量身打造高端赚钱模板,我们注重细节,有着严谨的开发态度,一切从客户角度出发,如果你也喜欢 WordPress导购主题,欢迎和我们一起交流!


6 + 2 = ?

目前还没有评。

切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册