我能让每个人都同意在模板中嵌入短代码是“正确的”做法吗?我已经对它们进行了测试,它们工作得很好,但我只是想了解每个人的想法。谢谢
下面是一个示例:
<?php echo do_shortcode(\'[course_complete]\'); ?>
我能让每个人都同意在模板中嵌入短代码是“正确的”做法吗?我已经对它们进行了测试,它们工作得很好,但我只是想了解每个人的想法。谢谢
下面是一个示例:
<?php echo do_shortcode(\'[course_complete]\'); ?>
这个短代码必须来自某个地方,现在你有了一个依赖项,也许有这个短代码的插件被停用了,谁知道呢
do_shortcode
而不是从头开始创建一个。即使您绕过了短代码,直接转到原始函数,您仍然存在上述相同的问题。如果短代码不存在,它将正常降级为空字符串。您也可以在帖子内容中使用快捷码
短代码太棒了!但请记住它们的目的,如果您需要将内容放入模板中,则不需要使用短代码,但如果需要,该选项始终存在。这个do_shortcode
功能只是一种工具,它们是用来在内容中嵌入东西的,不要把它作为网站或框架的基础。我已经建立了很多网站,我不必这样做
短代码是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()
通常是一个非常边缘的情况。
这样做的短代码与eval
. 如果您打算给用户一个选项,但不是一个可接受的编码实践,那么这是可以的。
当以这种方式激活功能时,您会失去三件事
代码可读性。你到底打算在那里做什么?如果不看一下短代码的实现,我就猜不到它,没有工具可以帮助我找到它。
可预测性。在新版本中更改短代码属性时会发生什么情况?当短代码本身只是在做一些完全超出您预期的事情时,会发生什么?当您直接调用某个函数时,很可能会出现错误,提示您注意界面中不兼容的更改,但使用一个在用户抱怨之前您不知道的快捷码。
可测试性。从第二点开始,但值得强调。当您不知道应该发生什么时,您将如何测试您的代码?
如果你特别追求灵活性,在我看来,一个更好的方法是创建自己的动作挂钩,并让人们挂钩。您可以提供任何您认为有用的钩子实现,如果人们愿意,他们可以更改它。这里的要点是,钩子作为“随机的东西可以放在这里”的手段的意图比使用短代码更明确。
这个WordPress developers reference page for shortcode_atts() 国家:$atts(array)(必选)用户在shortcode标记中定义的属性。但我不理解这个定义。例如,在WP Frontend Profile 插件:$atts = shortcode_atts( [ \'role\' => \'\', ], $atts ); 据我所知,shortcode\