在我们使用wordpress的时候会发现一些小问题,因为wordpress是外国程序,对中文兼容问题还是存在一些小毛病,就比如 WordPress 使用中文标签链接打开,提示“404 页面未找到”。
产生中文 TAG 标签链接无法打开的原因在于 WordPress 不支持中文的编码。之前本博客分享过修改 WordPress 程序代码的方式实现修复这个问题的方法(详见 “wordpress中文标签出现404错误的解决办法”一文),不过这种方法有两个弊端,一是每次 WordPress 升级后又要重新修改文件很不方便,二是没能决绝中文标签的翻页问题。
解决方法一
1.使用下面这个插件,就可以彻底地解决了这个问题!
插件名称:IIS Chinese Tag Permalink
解决方法一
1.如果不想装插件,可以直接把以下这段代码扔到主题的 functions.php 中!
/*
Plugin Name: IIS Chinese Tag Permalink
Plugin URI: http://blog.bossma.cn/php/in-iis-wordpress-chinese-tag-permalinks-plugin/
Description: In IIS, wordpress use Chinese Tag permalink
Author: BOSSMA.CN
Author URI: http://blog.bossma.cn/
Version: 1.2
*/
add_action('init', 'bossma_get_urf8_pathandurl');
add_filter('get_pagenum_link','bossma_set_utf8_pagenumlink');
add_action('parse_query','bossma_chinese_tag_encode');
//iis encoding the url with GBK,but wordpress with utf-8
function bossma_get_urf8_pathandurl() {
$_SERVER['PATH_INFO']=iconv("GBK","UTF-8",$_SERVER['PATH_INFO']);
$_SERVER['REQUEST_URI']=iconv("GBK","UTF-8",$_SERVER['REQUEST_URI']);
}
//urlencode for chinese tag
//sometimes preg_match can not match the chinese correctly
function bossma_chinese_tag_encode($query){
if(isset($is_tag)&&$is_tag){
if($query->query_vars['tag']!=''){
$query->query_vars['tag']=urlencode($query->query_vars['tag']);
}
}
}
//for generate tag pagenum link
//use utf8 encode
function bossma_set_utf8_pagenumlink($result){
$tag_index=stripos($result,"/tag/");
$link_len=strlen($result);
if($tag_index!==false){
$link_base=substr($result,0,$tag_index);
$page_index=strripos($result,"/page/");
if($page_index!==false){
$tag_str=substr($result,$tag_index+5,$page_index-$tag_index-5);
$result=$link_base."/tag/".rawurlencode($tag_str).substr($result,$page_index);
}else{
$tag_str=substr($result,$tag_index+5);
$result=$link_base."/tag/".rawurlencode($tag_str)."/";
}
}
return $result;
}
以上两种方法都可以解决wordpress中文标签404错误以及无法翻页的问题,更多网站模板、建站教程、建站技巧可以关注360模板吧,我们会不定期分享更多好玩的代码、源码、教程等。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END