add_shortcode() を使い、ショートコードを作成してコード内で表示を行った場合、結果がショートコードを設置した場所に正しく表示されないといったことが起こります。
// Hello, My Shortcode! を表示するプラグラム function my_shortcode() { echo 'Hello, My Shortcode!'; } add_shortcode('shortcode', 'my_shortcode');
こちらですと、”Hello, My Shortcode” はショートコード[shortcode]を設置した場所ではなく、本文の先頭に表示されてしまいます。
ob_start() と ob_get_clean() を使うことで、ショートコードを設置した場所に正常に表示を行うことができます。ob_get_clean() は return します。
// Hello, My Shortcode! を表示するプラグラム(修正) function my_shortcode() { ob_start(); echo 'Hello, My Shortcode!'; return ob_get_clean(); } add_shortcode('shortcode', 'my_shortcode');
こちらでショートコード[shortcode]を設置した場所に正常に表示が行われます。
PHP 部を一旦終了することで echo を使わずに表示させることも可能です。
function my_shortcode() { ob_start(); ?> <p>Hello, My Shortcode!</p> <?php return ob_get_clean(); } add_shortcode('shortcode', 'my_shortcode');