ショートコード関数のコンテンツを表示するには、echo
とreturn
の両方が正常に機能することがわかりました。
function foobar_shortcode($atts) {
echo "Foo Bar"; //this works fine
}
function foobar_shortcode($atts) {
return "Foo Bar"; //so does this
}
知りたいのですが、どちらを使っても違いはありますか?もしそうなら、推奨されるものは何ですか?この場合、私は通常エコーを使用します。大丈夫ですか?
エコーは特定のケースで機能する場合がありますが、絶対に使用しないでください。ショートコードは何も出力することを意図したものではなく、コンテンツのみを返す必要があります。
ショートコードに関するコーデックスからのメモは次のとおりです。
ショートコードによって呼び出される関数は、いかなる種類の出力も生成しないことに注意してください。ショートコード関数は、ショートコードを置き換えるために使用されるテキストを返す必要があります。出力を直接生成すると、予期しない結果が発生します。
http://codex.wordpress.org/Function_Reference/add_shortcode#Notes
大量のコンテンツを出力する場合は、次を使用する必要があります。
add_shortcode('test', 'test_func');
function test_func( $args ) {
ob_start();
?> <your contents/html/(maybe in separate file to include) code etc> <?php
return ob_get_clean();
}
ショートコードで「echo」を使用すると、ショートコードが処理される場所に情報が表示されます。これは、必ずしも実際にショートコードを追加した場所であるとは限りません。 「return」を使用すると、ページ内でショートコードを追加した場所に正確に情報が返されます。
たとえば、画像、ショートコード、テキストの場合:
エコー:画像の上に出力されます
戻り値:画像の後、テキストの前(実際にショートコードを追加した場所)に出力されます
違いは、echo
は、関数を終了することなく、テキストをページに直接送信することです。 return
は関数を終了し、テキストを関数呼び出しに送り返します。
エコーの場合:
function foobar_shortcode($atts) {
echo "Foo"; // "Foo" is echoed to the page
echo "Bar"; // "Bar" is echoed to the page
}
$var = foobar_shortcode() // $var has a value of NULL
返品の場合:
function foobar_shortcode($atts) {
return "Foo"; // "Foo" is returned, terminating the function
echo "Bar"; // This line is never reached
}
$var = foobar_shortcode() // $var has a value of "Foo"
エコーとリターンが同じものであるというわけではありません。最初の関数でエコーが完了すると、何もすることが残っていないので、戻ります。
2番目のfxでは、明示的に関数を終了し、呼び出し元の関数に値を返します。
私は使うだろう:
function foobar_shortcode($atts) {
return "Foo Bar"; //so does this
}
次のようなことをしていると簡単です。
$output = '<div class="container">' . do_shortcode('foobar') . '</div>';
echo $ouput;
後で..