web-dev-qa-db-ja.com

ショートコードの出力は投稿の本文の前に表示されます

複製可能:
短いコードの出力が早すぎます

ポストボディ内のショートコードを介してプラグインコードを正確な位置に挿入するにはどうすればよいですか。

問題は、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>

…そしてそれはポストのトップに入ります。

私のせいですか?

3
drake2300

私は以前にこの問題を抱えていました:ショートコードは(printechoを使って) display の内容を出力すべきではなく、returnを使うべきではありません。

すべての出力ステートメントを変換するのが非常に難しい場合、または常に出力を表示する機能を使用する必要がある場合は、 output buffering を使用できます。バッファはechoprintの内容を 'キャッチ'し、それを変数に書き込めるようにします。

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' );

出力バッファリング制御 およびさまざまな 出力制御機能 の詳細については、こちらをご覧ください。

11
shea