Simple Tags是一款强大的标签插件,但对中文标签内链支持不够好,不能自动链接正文内容中出现的标签,而且经常不能在新的WordPress版本下使用,鸟类网修改了这个插件(分别基于 Simple Tags 1.6.6 、 Simple Tags 1.8 、Simple Tags 2.2),使之完美兼容中文标签,并删去了大量多余无用的文件,兼容最新版本的 WordPress。

一、适用于WordPress 2.9的Simple Tags

鸟类网之前使用的就是这个1.6.6修改版,没出过任何问题。

simple tags版本:1.6.6

适用的WordPress版本:2.7-2.9。

WordPress插件Simple Tags鸟类网修改版下载地址:

http://niaolei.org.cn/wp-content/download/simple-tags.zip

二、适用于WordPress 3.0、WordPress 3.1的Simple Tags

很多博主升级到WordPress 3.0以后出现错误提示

error: Call to a member function add_rewrite_tag() on a non-object in /home2/***/public_html/***/wp-includes/taxonomy.php on line 289

整个网站就这样挂掉了。不着急,这可能是由于simple tags插件引起的。到FTP下,将插件simple tags删除。这时,你的网站就可以打开了,然后下载鸟类网修改的兼容WordPress 3.0的最新的simple tags版本,同样完美兼容中文。

simple tags版本:1.8

适用的WordPress版本:经本人WordPress 3.0、WordPress 3.1实测有效!

WordPress插件Simple Tags 1.8 鸟类网修改版下载地址:

http://niaolei.org.cn/wp-content/download/simple-tags-1.8.zip

三、适用于WordPress 3.3的Simple Tags

鸟类网目前正使用 simple tags 的最新版本:2.2版。

simple tags版本:2.2

适用的WordPress版本:经本人WordPress 3.3 实测有效!WordPress 3.2 估计也是一样的吧。毕竟 WordPress 自 2.9 版以来,插件一直保持向下兼容。

WordPress插件Simple Tags 2.2 鸟类网修改版下载地址:

http://niaolei.org.cn/wp-content/download/simple-tags-2.2.zip

四、自己动手修改Simple Tags

simple tags 对中文标签的支持其实也没什么巧的,很简单的修改就可以使之支持自动中文标签链接,

4.1  对于simple tags 1.6.6版和simple tags 1.8版

找到 client.php文件,

类似如下语句:

$match = "/\b" . preg_quote($term_name, "/") . "\b/".$case;

中的两个 \去掉, \在正则表达式中表示单词边界,但是中文跟英文不一样,字(单词)与字(单词)之间没有边界。即:

$match = "/" . preg_quote($term_name, "/") . "/".$case;

4.2 对于simple tags 2.2版,(鸟类网独家经验分享哦

第一步,找到 \inc\class.client.autoterms.php 文件,在大约第100行,

类似如下语句:

if ( preg_match("/\b".$term."\b/i", $content) );

中的两个 \b 去掉,\在正则表达式中表示单词边界,但是中文跟英文不一样,字(单词)与字(单词)之间没有边界。即:

if ( preg_match("/".$term."/i", $content) );

第二步,找到 \inc\class.client.autolinks.php 文件,在大约第160行,

类似如下语句的行首添加双斜杠,将这两句话注释掉:

//$match = '/(\PL|\A)(' . preg_quote($term_name, "/") . ')(\PL|\Z)/u'.$case;

//$substitute = '$1<a href="'.$term_link.'" class="st_tag internal_tag" '.$rel.' title="'. esc_attr( sprintf( __('Posts tagged with %s', 'simpletags'), $term_name ) )."\">$2</a>$3";

然后将紧跟在下面的原本被注释掉的语句启用,并去掉其中的两个 \b ,即:

$match = "/" . preg_quote($term_name, "/") . "/".$case;

$substitute = '<a href="'.$term_link.'" class="st_tag internal_tag" '.$rel.' title="'. esc_attr( sprintf( __('Posts tagged with %s', 'simpletags'), $term_name ) )."\">$0</a>";

好了,至此,中文标签完美兼容啦啦啦!

嫌麻烦的话,可以直接下载我修改好的文件。

有兴趣的读者可以看看本人原创图片插件——WP Thumbnails

有问题请留言。