强烈向大家推荐一个好网站,【我要自学网】,教程由在校老师录制,有办公会计、平面设计、室内设计、机械设计、网页编程、影视动画等教程.....让你足不出门,都可以体验学校的专业教育!
第一步: 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");
保存后覆盖原文件,网站的中文搜索就能正确执行了。