短代码是PHP回调的占位符。作为占位符,它用于不能直接使用PHP的地方。
此外,do_shortcode()
将在传递的字符串中执行正则表达式,查找所有已注册的短代码,如果您只想执行一个短代码,而不是查找字符串中的所有短代码,从性能角度来看,这是不合适的。
因此,几乎没有理由使用do_shortcode( \'[my_shortcode]\' )
在模板文件中;使用回调而不是占位符更合适。
但是,可以使用do_shortcode()
解析字符串或过滤可能包含要执行的短代码的内容,但模板文件可能不是解析字符串或过滤内容的正确位置。例如,您可能希望过滤文本小部件内容并允许其中包含短代码:
add_filter( \'widget_text\', \'do_shortcode\' );
do_shortcode()
当您需要短代码的功能时,它也很有用,无论您得到的是确切的输出或使用的是什么回调,您都需要该功能。
例如,插件/主题可以重新定义短代码,例如库短代码:
remove_shortcode( \'gallery\', \'gallery_shortcode\' );
add_shortcode( \'gallery\', \'my_gallery_shortcode\' );
在这种情况下,如果需要库功能,而不是回调的特定输出,请使用
do_shortcode( \'[gallery]\' )
在一个主题内是合理的。但是,任何人都不应该重新声明库的短代码
post_gallery
filter 应用于修改库短代码输出。因此,使用
do_shortcode(\'[gallery]\')
将是一个非常边缘的用例。
相同的参数适用于任何短代码和do_shortcode()
通常是一个非常边缘的情况。