WordPress自定义标签云


Wordpress云标签WordPress的标签云功能虽然有利于访客选择相关文章,但是一般会遭遇两个问题:一个是很多博客出于SEO角度,错误将日志标签和文章关键字等同起来,导致浏览体验性很差。另一个就是标签设置不合理,数量越来越多,导致形成的标签云非常难看。


“标签是给访客看的,关键字是给搜索引擎看的”。
对于第一个问题只能是博主自己注意了,而第二个问题需要自定义WordPress的标签云。

  • 比如标签过多,某些标签需要隐藏,不显示在标签云里面;
  • 标签字号大小和主题不搭配;
  • 自定义标签排列顺序。

这些都可以直接修改WordPress来实现。


1.方案一:修改category-template

找到wp-includes目录下的category-template.php。
最新的Wordpress 3.04版定位到第560行(WordPress 3.5 第607行):

category-template.php

直接根据这些英文名字就可以知道怎么改了:

  • smallest:标签的最小字号;
  • largest:标签的最大字号;
  • unit:标签字号的单位;
  • number:标签云中输出标签的数量;
  • format:参数’Flat’将会以平铺的形式输出tag并且用空格将tag分隔开;参数’List’将会输出一组无序的tag列表;参数’Array’将允许你定义一组tag排列;
  • orderby:将会以’name’或’count’对tag进行排列;
  • order:定义tag以’ASC’升序或’DES’降序进行排列。

直接修改category-template.php的好处是适合于所有的主题,但是每次WordpPress升级都得手动再次更改。


2.方案二:修改主题的<?php wp_tag_cloud(); ?>

一般主题调用标签云都是使用<?php wp_tag_cloud(); ?>,因此可以直接在这个函数里面定义标签的格式。
根据方案一的格式说明定义
比如
<?php wp_tag_cloud('unit=px&smallest=10&largest=20&number=45&orderby=name'); ?>
这样云标签就会按照定义的格式显示了。
修改主题的<?php wp_tag_cloud(); ?>的方法比较直接,二次更改也很方便。


3.方案三:直接用html语言代替wp_tag_cloud

这也是优化Wordpress效率的一个重要方法。
如果是使用wp_tag_cloud函数,则每次浏览页面,都会进行数据库的查询。其实这些标签基本都是固定的,尤其是WordPress写作一段时间后,需要显示的标签基本都是固定了。所以可以直接将标签的html代码替换wp_tag_cloud函数。
这样做的另一个好处就是可以自定义哪些标签需要显示,哪些需要隐藏,这个比前两个方案中的增加exclude更加方便。
查看设置好的WordPress的源代码,将标签云的代码复制替换主题里面的wp_tag_cloud所在的代码组就行了。
直接用html语言代替wp_tag_cloud是基于优化wordpress的效率而言的。麻烦就是如果需要新增显示的标签,就需要增加html代码了。


4.方案四:非插件实现云标签彩色

WordPress标签默认只有一种颜色,或者是通过主题CSS定义了多种颜色,但是都不是彩色。这里记录网上的一个非插件代码。
在functions.php中,加入

function colorCloud($text) {
$text = preg_replace_callback(‘|<a (.+?)>|i’, ‘colorCloudCallback’, $text);
return $text;
}
function colorCloudCallback($matches) {
$text = $matches[1];
$color = dechex(rand(0,16777215));
$pattern = ‘/style=(‘|”)(.*)(‘|”)/i’;
$text = preg_replace($pattern, “style=”color:#{$color};$2;””, $text);
return “<a $text>”;
}
add_filter(‘wp_tag_cloud’, ‘colorCloud’, 1);

这样,就实现了随机色彩,可以自定义$color = dechex(rand(0,16777215));
没有测试过,也不打算用这个。因为直接在functions.php中增加代码并不能适应所有的主题,这个是受主题限制的。


现在使用的是方案一和三的结合。因为只用一个主题,通过方案一固定云标签的格式,然后通过方法四用html代码替换来减少数据库查询,加速WordPress。


2011.03.07更新:

非插件免代码实现彩色标签云