我有几个长表单,我想输出为短代码。Shortcode API 表明
如果短代码生成大量HTML,则可以使用ob\\u start捕获输出并将其转换为字符串
这似乎是exactly 我的案子。此外,我想在HTML中使用WordPress函数,如下所示:
function my_shortcode_register_form( $atts, $content = null ) {
ob_start();
?>
<div id="reg_form">
<h2><?php echo __(\'Login info\', \'my-plugin-domain\'); ?></h2>
<!-- and so on -->
</div>
<p><a href="<?php echo site_url( \'dashboard\' ); ?>"><?php echo __(\'Go to Dashboard\', \'my-plugin-domain\'); ?></a>!</p>
<?php
$output_string = ob_get_contents();
ob_end_clean();
return $output_string;
}
add_shortcode(\'register_form\', array( $this, \'my_shortcode_register_form\' ));
它工作得很好,但我对最佳实践、潜在错误以及性能感兴趣。这种方法有什么缺点吗?有什么可能出错的吗?
我至少看到了one question 在此警告中,除非绝对必要,否则不要仅使用输出缓冲。我应该把这些表单放到模板中吗?
最合适的回答,由SO网友:s_ha_dum 整理而成
我应该把这些表单放到模板中吗?
这取决于表单,而且您还没有打印出表单所做工作的详细信息。短代码很好,但不是每个作业的正确工具。
我会:
比起短代码,更喜欢专用模板,尤其是对于长表单。你开始不得不处理$_POST
或$_GET
短代码中的数据,或检查标头中是否存在该数据,或其他类似的数据,这会变得很混乱。另外,短码是可以避免的开销如果表单必须在多个页面上重复使用,或者如果这种重复使用至少是一种合理的可能性,请考虑规则1的例外情况,并制作一个短代码。老实说,如果它没有通过“重用”测试,我根本看不出这个短代码有什么意义如果您需要快捷码周围的可编辑内容,请考虑规则#1和#2的例外情况如果您正在编写插件,那么短代码是更好的选择之一。您可以指示人们创建页面模板并插入一些代码,或者更改重写规则以创建自己的伪页面,但第一个对大多数用户来说是令人不快的,第二个是复杂的。甚至要求人们在帖子正文中粘贴一个短代码也会引起恐慌,但在某种程度上,人类必须学会使用计算机我确信还有其他的担忧,但这些都是我最关心的。