快捷码、输出缓冲和WordPress函数

时间:2013-03-26 作者:montrealist

我有几个长表单,我想输出为短代码。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 在此警告中,除非绝对必要,否则不要仅使用输出缓冲。我应该把这些表单放到模板中吗?

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

我应该把这些表单放到模板中吗?

这取决于表单,而且您还没有打印出表单所做工作的详细信息。短代码很好,但不是每个作业的正确工具。

我会:

比起短代码,更喜欢专用模板,尤其是对于长表单。你开始不得不处理$_POST$_GET 短代码中的数据,或检查标头中是否存在该数据,或其他类似的数据,这会变得很混乱。另外,短码是可以避免的开销

结束

相关推荐

SHORTCODE_ATTS-一个URL变量不起作用

我开发了一个基于短代码的小插件。下面是一个简化版的代码,用于短代码本身:function lishortcode($liatts) { extract(shortcode_atts(array( \"li\" => get_option(\'li\'), ), $liatts)); foreach ($liatts as $key => $option) { $li[$key] =