• 欢迎访问奇跡の海网站,本站不上传任何资源,所有资源均来自于网络,欢迎加入奇跡の海~!奇跡の海-WordPress QQ群
  • 本站下载资源为网络上收集整理而来,并且以计算机技术研究交流为目的,版权归原作者所有,仅供大家参考,学习,不存在任何商业目的与商业用途.
  • 本站系统镜像均来自于官方原版,ed2k可视为P2P下载链接。所有操作系统默认均为试用版,如有正版密钥可以有效激活,本站不提供任何激活和相关服务。

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

服务器 奇跡の海 2年前 (2017-01-14) 400次浏览 已收录 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/关键词” 的形式

1
2
3
4
5
6
7
8
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编码转换的命令:

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

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

1
2
3
4
5
6
7
8
9
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
查找代码

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

改成

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

查找代码

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

改成

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

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


版权声明:本站所有文章和资源使用CC BY-NC-SA 4.0协议授权发布 , 转载应当以相同方式注明文章来自“SeaOMC.COM->Win主机下WordPress网站无法使用中文站内搜索问题解决!在下边可以分享本文哦!
喜欢 (0)
[]
分享 (0)
奇跡の海
关于作者:
一个WordPress菜鸟!
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址