wordpress侧边栏标签云优化:由默认排序改为按文章引用数量排序¶
原文链接: https://www.itylq.com/cloud-tags-sortby-count-desc.html
发布日期: 2023-10-24 迁移时间: 2026-03-21
今天扫了一眼网站主页的侧边栏标签云,就很纳闷,怎么好像一直没有改变过?后台标签有四五百个了,全部显示是放不下的,之前做了显示数量为 20 个的限制,但是标签现在是一成不变呀,就很不科学。
后台查看了标签云标签默认的显示规则是,foreach 循环读取标签数组,到自定义的显示数量个数时结束。而标签数组默认是按照首个字符排序的,符号>数字>字母>中文文字,这样的话,最近更新的一些中文标签永远都没有机会在标签云里面显示了…
1 目标¶
调整标签云标签的显示规则,即调整标签数组的排序,按照文章引用数量/关联文章数量排序。
2 实现¶
找到 widget.php (inc/fun/widget.php)文件,在第 870 行左右,找到如下代码:
foreach ($tags as $tag){
if ($max_count > 0 && $count >= $max_count){
break;
}
$link = get_tag_link($tag);
echo "<a href='{$link}' class='badge d-none d-md-inline-block bg-".pk_get_color_tag()." ahfff'>{$tag->name}</a>";
$count++;
}
修改为:
// 根据标签引用数量排序,取前20个生成新的tags数组
$tags_counts = array_column($tags,'count');
array_multisort($tags_counts,SORT_DESC,$tags);
// 新的tags数组已生成
foreach ($tags as $tag){
if ($max_count > 0 && $count >= $max_count){
break;
}
$link = get_tag_link($tag);
// echo "<a href='{$link}' class='badge d-none d-md-inline-block bg-".pk_get_color_tag()." ahfff'>{$tag->name}</a>";
// 标签名称后面加上具体的数量 tag(count)
echo "<a href='{$link}' class='badge d-none d-md-inline-block bg-".pk_get_color_tag()." ahfff'>{$tag->name}({$tag->count})</a>";
$count++;
}
备注: 按标签的“count”(文章引用数量)字段值降序排列,根据自定义显示的标签个数截断并生成新的标签数组,然后再修改一下标签显示名称,在标签名称后面加上引用数量,最后标签显示格式形如“源码(9)”。
效果: 标签云中的标签,按照标签的“总数”(count值,文章引用数量/文章关联数量)排序,被更多文章引用/使用的标签更优先展示。

Tips: 本文中的代码部分仅对 Puock 主题有效,其他 wordpress 主题可酌情参照处理。
本文由WordPress迁移至MkDocs