かなりマニアックな内容ですが、Custom Field Suiteというプラグインで入力した内容を、投稿の保存時に書き換える処理を加える時にショートコードの展開を無効化したい状況に遭遇しましたので、メモしておこうと思います。
CFS()->get()
関数でリッチエディタの情報取得時に'the_content'
フィルターフックが発動する仕組みになっており、この時にショートコードも展開されてしまいます。
つまり、投稿の保存時に内容を書き換えるために一度CFS()->get()
するので、ショートコードが展開済みの状態で保存されるようになってしまいました。
以下、それを回避する為のコードです。(ループフィールドの情報なのでget_post_meta()
が使えない状況を想定)
global $shortcode_tags; //グローバル変数の中身にショートコードの情報がある
$copy_shortcode = $shortcode_tags; //後で戻すために別変数へコピー
$shortcode_tags = array(); //グローバル変数の中身を空に
//CFS()->getで情報取得
$loop_section = CFS()->get( 'sec_loop', $post_id );
// ...なんやかんや処理...
//再度グローバル変数にショートコードの情報を格納
$copy_shortcode = $all_shortcode_tags;
コメント