WordPress 5.4引入了一个新函数 apply_shortcodes()
,它是当前do_shortcode()
函数的别名,也就是说,以后推荐使用 apply_shortcodes()
来替代 do_shortcode()
。
总的来说,是为了规范命名语义。do_*
隐含的语义表示函数显示短代码的结果。但是实际上并非如此。实际上,do_shortcode()
需要采用Echo输出其结果。
目前要输出简码结果,使用的代码为:
echo do_shortcode( '[wporg]My Text[/wporg]' );
// 必须添加echo才能显示简码的结果
从语义上讲,我们应该不需要echo就可以输出简码结果,但实际上没有echo就无法输出结果:
do_shortcode( '[wporg]My Text[/wporg]' );
// 但是这样写不会输出任何内容…
如您所知,do_shortcode()
它用于无数的插件和主题中。因此,目前无法直接弃用它。但是,如果大家可以开始围绕别名apply_shortcodes()
达成共识,那么弃用 do_shortcode()
最终可能会在将来成为现实。
这种做法是有先例的,比如之前采用 get_the_permalink()
来替代 get_permalink()
一样(WordPress 3.9.0)。
apply_shortcodes
旨在获得更好的语义:不是执行操作并输出到当前缓冲区,而是将过滤器应用于输入并返回结果。该过程更简单,更简洁,更易于维护,也更利于新开发者理解和接受。
apply_shortcodes()
可以和目前do_shortcode()
使用一样的方式:
echo apply_shortcodes( '[wporg]My Text[/wporg]' );
// 显示简码的结果
邀请主题/插件作者和WordPress开发人员开始使用apply_shortcodes()
,而不再使用do_shortcode()
。
需要明确的是,目前还没有决定何时弃用 do_shortcode()
。但是开发人员越早将所有内容切换到更具语义的apply_shortcodes()
,核心团队就可以越早计划弃用旧函数。从 WordPress 5.4 开始,推荐使用apply_shortcodes()
来显示简码结果。