複製可能:
短いコードの出力が早すぎます
ポストボディ内のショートコードを介してプラグインコードを正確な位置に挿入するにはどうすればよいですか。
問題は、wpエンジンがプラグインコードBEFORE post bodyを常に挿入することです。修正できますか?
例えば:私はいくつかの[shortcode option="value"]
を持っています、それはdivコンテナの中にimageでいくらかのテキストを生成します。投稿--- AFTERというテキストの中に入れると、wpは次のコードを出力します。
<div> here is my plugin code </div> <p> here is the text of the post </p>
…そしてそれはポストのトップに入ります。
私のせいですか?
私は以前にこの問題を抱えていました:ショートコードは(print
やecho
を使って) display の内容を出力すべきではなく、return
を使うべきではありません。
すべての出力ステートメントを変換するのが非常に難しい場合、または常に出力を表示する機能を使用する必要がある場合は、 output buffering を使用できます。バッファはecho
やprint
の内容を 'キャッチ'し、それを変数に書き込めるようにします。
function my_awesome_shortcode( $atts, $content = null ) {
// begin output buffering
ob_start();
// output some text
echo 'foo' . "bar\n";
$greeting = 'Hello';
printf( '%s, %s!', $greeting, 'World' );
// end output buffering, grab the buffer contents, and empty the buffer
return ob_get_clean();
}
add_shortcode( 'awesome', 'my_awesome_shortcode' );
出力バッファリング制御 およびさまざまな 出力制御機能 の詳細については、こちらをご覧ください。