彻底解决 wordpress 中文标签 404 以及无法翻页问题

mengkun 7.4K 10

WordPress 是世界上最受欢迎也是最流行的博客系统,不过 WordPress 在中文支持上还存在不少问题,比如 WordPress 中文标签链接打不开,提示“404 页面未找到”。

产生中文 TAG 标签链接无法打开的原因在于 WordPress 不支持中文的编码。之前本博客分享过修改 WordPress 程序代码的方式实现修复这个问题的方法(详见 “wordpress中文标签出现404错误的解决办法”一文),不过这种方法有两个弊端,一是每次 WordPress 升级后又要重新修改文件很不方便,二是没能决绝中文标签的翻页问题

今天“偶然”找到了一个插件(其实找了很久...),终于彻底地解决了这个问题!

插件名称:IIS Chinese Tag Permalink
插件地址:https://wordpress.org/plugins/iis-chinese-tag-permalink/

遇到了同样问题的朋友,直接安装上述插件就行了,如果有“插件强迫症”不想安装插件的,可以直接把以下这段代码扔到主题的 functions.php 中!

  1. /* 
  2. Plugin Name: IIS Chinese Tag Permalink 
  3. Plugin URI: http://blog.bossma.cn/php/in-iis-wordpress-chinese-tag-permalinks-plugin/ 
  4. Description: In IIS, wordpress use Chinese Tag permalink  
  5. Author: BOSSMA.CN 
  6. Author URI: http://blog.bossma.cn/ 
  7. Version: 1.2 
  8. */  
  9. add_action('init', 'bossma_get_urf8_pathandurl');  
  10. add_filter('get_pagenum_link','bossma_set_utf8_pagenumlink');  
  11. add_action('parse_query','bossma_chinese_tag_encode');  
  12.   
  13. //iis encoding the url with GBK,but wordpress with utf-8  
  14. function bossma_get_urf8_pathandurl() {  
  15.     $_SERVER['PATH_INFO']=iconv("GBK","UTF-8",$_SERVER['PATH_INFO']);  
  16.     $_SERVER['REQUEST_URI']=iconv("GBK","UTF-8",$_SERVER['REQUEST_URI']);  
  17. }  
  18.   
  19. //urlencode for chinese tag  
  20. //sometimes preg_match can not match the chinese correctly   
  21. function bossma_chinese_tag_encode($query){  
  22.     if(isset($is_tag)&&$is_tag){  
  23.         if($query->query_vars['tag']!=''){  
  24.             $query->query_vars['tag']=urlencode($query->query_vars['tag']);  
  25.         }  
  26.     }  
  27. }  
  28.   
  29. //for generate tag pagenum link  
  30. //use utf8 encode  
  31. function bossma_set_utf8_pagenumlink($result){  
  32.  $tag_index=stripos($result,"/tag/");  
  33.  $link_len=strlen($result);  
  34.  if($tag_index!==false){  
  35.   $link_base=substr($result,0,$tag_index);  
  36.   $page_index=strripos($result,"/page/");  
  37.   if($page_index!==false){  
  38.    $tag_str=substr($result,$tag_index+5,$page_index-$tag_index-5);  
  39.    $result=$link_base."/tag/".rawurlencode($tag_str).substr($result,$page_index);  
  40.   }else{  
  41.    $tag_str=substr($result,$tag_index+5);  
  42.    $result=$link_base."/tag/".rawurlencode($tag_str)."/";  
  43.   }  
  44.   
  45.  }  
  46.  return $result;  
  47. }  

发表评论 取消回复
表情 图片 链接 代码

  1. 小花
    小花 Lv 1

    楼主能不能录一些技术教程视频让我们学习下,对于菜鸟我来说,有的东西看的比较吃力。

  2. 圣影
    圣影 Lv 1

    我想问博主用的服务器什么配置。

  3. 懿古今
    懿古今 Lv 1

    WordPress站点如果是用Linux主机,这个问题就可以直接忽略了

    • mengkun
      mengkun 站长

      @懿古今由于某些特殊的原因,导致服务器不得不使用 windows 的系统。因此凭空多出了很多莫名其妙的问题 [wb_二哈]

  4. 有本事点我
    有本事点我 Lv 1

    支持

  5. 云同学
    云同学 Lv 1

    孟坤,固定连接/%post_id% 生成后的网址是xxx.com/123不是xxx.com/123/代码能给一下吗?

    • mengkun
      mengkun 站长

      @云同学直接在后面多加一个斜杠不就可以了吗……
      /%post_id%/

      • 百影阁
        百影阁 Lv 1

        @mengkunhhhhhhhhhhhhhhhhh,
        代码应该咋写呢

      • mengkun
        mengkun 站长

        @百影阁什么代码?

    • 1
      1 Lv 1
分享