WordPressのショートコード追加でエラー!?[WordPress]

Author:

WordPressでショートコードを追加して、投稿を「保存」したらエラー出て困った。

↓ ↓ ↓ ↓ ↓

更新に失敗しました。 返答が正しい JSON レスポンスではありません。

うそやーん。

ショートコードの関数内は echo とか出力系を使うとエラーになるらしい。

なるほど。よし、全て変数に入れて、再度に return $html; でOKだよn… なぜだっ!

まだエラー出るやん。

if ( !  is_admin() ) {
	add_shortcode( 'advanced_search_form', 'advanced_search_shortcode' );
}

↑こんなんやってみたけど、全然ダメなんですよ。

function advanced_search_shortcode() {
	if ( is_admin() ) {
		return;
	}

	// 以下ショートコードの処理

}

↑これもダメ。

で、いろいろ探して見つけた解決策がこれ↓

解決策

function advanced_search_shortcode() {
	ob_start();

	// 以下ショートコードの処理

	ob_end_clean();
	return $output;
}
add_shortcode( 'advanced_search_form', 'advanced_search_shortcode' );

最高!

ob_start についてはこちら

ob_start — 出力のバッファリングを有効にする

https://www.php.net/manual/ja/function.ob-start.php