WEB制作者向け無料テーマ「Arkhe」をリリースしました

 CFS()->get()する時に一時的にショートコードの展開を無効にさせる方法【Custom Field Suite】

かなりマニアックな内容ですが、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;

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA

目次
WordPressテーマ SWELLWordPressテーマ SWELL