什么是从Wordpress插件输出HTML的更简洁方法?

时间:2015-06-04 12:52:17

标签: php wordpress-plugin wordpress

我的Wordpress插件会创建一些返回HTML块的短代码。

当我注册短代码时,我这样做:

    add_shortcode('bb-loans-form', function() {
        return Shortcodes::loanApplicationForm();
    });

这是Shortcodes类的静态方法:

public static function loadApplicationForm()
{
    $form = new \AdamWathan\Form\FormBuilder;

    $html = $form->open()->action('/apply')->class('bb-loan-form');

    $html .= '<div class="bb-form-field">';
    $html .= '<h2>Loan Application Number</h2>';
    $html .= $form->text('loan_app_number')->id('loan-app-number');
    $html .= $form->submit('Continue Loan');
    $html .= '</div>';
    $html .= $form->close();

    return $html;
}

这非常麻烦,而且很乱。我不喜欢像这样输出HTML。我也使用过Heredoc,但是在渲染表单时我必须使用字符串替换来包含重要的值。

有没有更好的方法来存储我的HTML文件?我不希望这些文件可公开访问。他们必须住在我的插件目录中。

它不是一个巨大的插件,所以我并不过分担心,但如果有更清晰的方法来包含所需的HTML,我想知道将来参考。< / p>

1 个答案:

答案 0 :(得分:2)

您可以只使用带有连接的单个字符串...

@include layout(8) {
  .foo { @include grid-span(5, 1); }
  .bar { @include grid-span(1, 6); }
  .baz { @include grid-span(2, 7); }
}

至少保持HTML一致。

我也不会真正看到Heredoc的问题,只要您分配变量并将其替换为:

$form = new \AdamWathan\Form\FormBuilder;
$html = $form->open()->action('/apply')->class('bb-loan-form') .
           '<div class="bb-form-field">
                <h2>Loan Application Number</h2>' .
                $form->text('loan_app_number')->id('loan-app-number') . 
                $form->submit('Continue Loan') .
           '</div>' .
        $form->close();

return $html;