有一些优畅客户,购买了优畅主题,发现自己的空间运行的时候,中文搜索不到。为了解决这个问题,优畅整理了一些方法分享给大家,希望能能起到一些帮助。
关于主题的使用,环境的配置是很重要,不会配置的可以付费请优畅代劳,如果可以会配置,那自然更好。
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' );
这样搜索就有了类似伪静态的效果了,但是只能搜索英文和数字,搜索中文还不行。
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");
保存后覆盖原文件,网站的中文搜索就能正确执行了。
拥有多年WordPress博客/企业建站开发经验,独树一帜的设计,提供最专业的网站设计方案;原创的主题标签语义化,增强网站优化效果。
增强用户体验、提高品牌形象给人留下深刻的印象,那就选择我们,我们的每一款主题都是独一无二的,都有自己的灵魂,每款主题都有各自的配色方案。
遵循现代网页设计的趋势,所有主题都提供完整的响应式布局,优化大桌面显示器以及对平板和智能手机的支持,从而提供一致性的用户体验。
长期及时地在线售后服务和免费升级更新,确保您的网站始终运行在最佳状态,24小时QQ在线的沟通方式免去您的后顾之忧,替您节省网站维护成本。
目前还没有评。