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