改变 bbPress 标签云短代码(Shortcode)的字体大小

这篇文章展示了

  • 如何用多个参数编写自己的 WordPress 短代码(Shortcode);
  • 如何改变字体大小和 bbPress 标签云上显示的标签数量。

遇到的问题

bbPress 标签云短代码 [bbp-topic-tags]没有提供任何参数。相关代码位于文件 plugins/bbpress/includes/common/shortcodes.php 第 522 行。 这里有 3 个硬编码的参数:最小字体大小 (9),最大字体大小 (38),显示的标签数量 (80)。

您可以在此处停止阅读,并前往对应位置修改这些默认参数。但是在下次 bbPress 升级时,您将丢失所做的更改。 如果您不能接受自己的修改被该回去,请继续阅读。

简单的解决方案 – 没有参数

在页面上使用:

[bbp-tag-cloud]

你需要将代码添加到你的子主题 function.php 文件中。

function my_bbp_tag_cloud() {
ob_start();
wp_tag_cloud( array(
‘smallest’ => 10,   ‘largest’  => 18,   ‘number’   => 27,
‘taxonomy’ => bbp_get_topic_tag_tax_id()  ) );
return ob_get_clean();
}
add_shortcode(‘bbp-tag-cloud’, ‘my_bbp_tag_cloud’);

注意:你需要使用 ob_start()ob_get_clean()函数来强制输出你的短代码,而不是在页面的顶部输出。

更难的解决方案-多参数

在页面上使用:

[bbPress-tag-cloud smallest="12" largest="20" number="22"]

将以下代码添加到你的子主题 function.php 文件中。

function param_bbp_tag_cloud( $atts) {
extract(shortcode_atts(array(
‘smallest’ => 10, ‘largest’ => 18, ‘number’ => 27 ), $atts));
ob_start();
wp_tag_cloud( array(
‘smallest’ => $atts[‘smallest’],
‘largest’ => $atts[‘largest’],
‘number’ => $atts[‘number’],
‘taxonomy’ => bbp_get_topic_tag_tax_id() ) );
return ob_get_clean();
}
add_shortcode(‘bbPress-tag-cloud’, ‘param_bbp_tag_cloud’);

总结

在本文中我们解决了几个问题。

  • 停止使用不灵活的 bbPress 标签云短代码。
  • 将标签云中的字体大小和标签数量的控制从核心文件移到了页面上。
  • 学会了如何将参数从短代码传递到函数。

剩下唯一要做的就是缩短代码,使其更容易阅读和维护。