For Tech ·

不用插件让Tag Cloud变彩色及更改字号

一直以来用的就是wp-cumulus,也一直觉得挺炫的,可是今天突然之间发现了一个重要问题,那就是所有的中文标签都没有显示。GOOGLE了半天,问题的原因是知道了,解决方法也大概知道了,那就是下载FLA文件,然后自己嵌入中文需要的字,折腾半天整理出来常用的500个汉字嵌入后,明明一步步按着牛人写的教程来干的,可是死活就是一个字都出不来。

于是没有办法,只好重归原来的素颜Tag,真不甘心,便想就算不能3D转,也要色彩缤纷一些。以下是实际使用有效的办法。

在主题的function.php或是wp-includes里面的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);

这样就解决了彩色标签的问题,(0,16777215)可以随便设置。可是有时字体太小,想改变的化就要再加一个函数,因为2.8版后的wordpress增加了一个filter,叫做widget_tag_cloud_args,取代了原来直接使用'unit=px&smallest=8&largest=20'的方法,而我在default-filters.php中没有找到这个filter,于是在上面代码下加另一段:

function tag_cloud_filter($args = array()) {
$args['smallest'] = 13;
$args['largest'] = 30;
$args['unit'] = 'px';
return $args;
}
add_filter('widget_tag_cloud_args','tag_cloud_filter', 90);

当然你也可以尝试使用原来的方法,我试过不如这种效果好。然后设定你希望的大小号就可以了。

至此tag cloud的问题就结束了,另外总觉得RSS widget的图标在那放着难看,这个只需要简单地进入default-widgets.php里搜索RSS widget class后,删除里面的icon行及链接里的<img />段就行了。此次折腾发现2.8 WordPress 中增加了好多的新函数啊,到处都是Since 2.8。

参与评论

  • Moeco

    不错,转了~

    9年前 (2009-10-10)
    回复
    回复Moeco
  • Ivan

    @Moeco, 欢迎传播,呵呵

    9年前 (2009-10-10)
    回复
    回复Ivan