wordpress免插件实现彩色标签云

10-06 | 夜光 | IT记录

虽然标签云(Tag Cloud)是WordPress2.3版以后的内置功能,在后台小工具中直接拖动添加到侧边栏即可。不过标签云字体默认情况尺寸不同,但色彩一致,看起来相当杂乱,不美观,虽然有 Simple Tags 等插件可以为标签上色,但是直接修改来实现会更好。我目前的博客主题是poetry,是一款由国人改自iNove的主题,改法和iNove主题类似,效果可以参考本站。

在主题文件夹中functions.php 文件中加入以下代码:

代码中”$color=dechex(rand(0,16777215));”:作用是定义标签随机颜色的十进制数值范围,0 等于 #000000,16777215 等于 #ffffff,就是把平常使用的十六进制转换为相应的十进制就可以了。

//Color Tag Cloud
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);

inove主题是加在以下代码上一行的:(位置随便但不能插到别的模块里去)

// custom comments
function custom_comments($comment, $args, $depth) {

修改完成后,用后台标签云小工具调用或者使用下面这段代码在主题文件夹sidebar.php中调用即可:(inove主题已经在sidebar.php中自带了,所以这步不需要了)

<?php wp_tag_cloud('smallest=8&largest=24&number=50'); ?>

“smallest”:最小的字体尺寸(使用频率最少的标签)
“largest”:最大的字体尺寸(频率最多的)
“number”:则表示标签显示数量。

对于poetry主题,如果不用后台小工具调用,可以在:

<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('south_sidebar') ) : ?>

之前添加如下代码来调用标签云:

<!-- Color Tag Cloud -->
<div class="widget">
<h3>标签云</h3>
<?php wp_tag_cloud('smallest=8&largest=16'); ?>
</div>

对于WordPress后台小工具的标签云 字体大小、标签显示数量 等的修改,在wp-includes\category-template.php 文件中搜索wp_tag_cloud找到相关参数修改。

对于WordPress后台写文章界面的标签云 标签显示数量 等的修改,在wp-admin\admin-ajax.php 文件中搜索“tags = get_terms”找到相关参数修改。

本文标签: ,,
本文链接: no-plugins-color-tag-cloud/
版权所有: 玻璃泉, 转载请注明本文出处。

4个评论

  1. 之前我用的主题集成了这个效果 我去提取出来试用了一下 又去掉了 还是要和主题搭配才好

  2. @角落
    可以调节下色彩范围~

  3. 博客不错,特来支持。

  4. 我说为何标签总不显示,原来只能显示45个默认。