web-dev-qa-db-ja.com

ショートコード、出力バッファリング、およびWordPress機能

私はショートコードとして出力したいと思う長い形式のカップルを持っています。 ショートコードAPI はそれを示します

ショートコードが大量のHTMLを生成する場合は、ob_startを使用して出力を取得し、それを文字列に変換することができます。

これは 正確に 私の場合のようです。また、私はこのように私の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' ));

うまくいきますが、ベストプラクティス、潜在的なバグ、そしてパフォーマンスに興味があります。このアプローチの欠点は何ですか?ひどくうまくいかないことがありますか?

私は少なくとも 一つの質問を見ました ここで警告はどうしても必要でない限り出力バッファリングを使うだけではありません。代わりにこれらのフォームをテンプレートに取り込むだけでいいのですか?

3
montrealist

代わりにこれらのフォームをテンプレートに取り込むだけでいいのですか?

それはフォームに依存します、そしてあなたはあなたのフォームが何をするかについて多くの詳細を印刷していません。ショートコードはいいですが、すべての仕事に適したツールではありません。

私は...するだろう:

  1. 特に長いフォームの場合は、専用のテンプレートをショートコードにしてください。あなたはショートコードの中で$_POST$_GETのデータを扱わなければならない、あるいはヘッダの中にそのデータが存在するかどうかなどを調べなければならなくなり、それは面倒になります。さらに、ショートコードはオーバーヘッドであり、避けることができます。
  2. フォームを複数のページで再利用する必要がある場合、またはそのような再利用が少なくとももっともらしい可能性がある場合は、規則#1の例外を考慮してショートコードを作成します。正直なところ、それが "再利用"テストに失敗した場合、私はショートコードの意味がまったくわかりません。
  3. ショートコード周辺の編集可能なコンテンツが必要な場合は、規則#1および#2の例外を検討してください。
  4. あなたがプラグインを書いているなら、ショートコードはあなたのより良い選択の一つです。ページテンプレートを作成してコードを挿入するように指示したり、自分自身の疑似ページを作成するように書き換え規則を変更するよう指示することもできますが、最初の操作はほとんどのユーザーにとっては不愉快です。ショートコードを投稿の本文に貼り付けるように人々に要求してもパニックを引き起こす可能性がありますが、ある時点で人類はコンピュータの使い方を学ぶ必要があります。

私は他の懸念があると確信していますが、それらは私に際立っているものです。

3
s_ha_dum