ACF6.2.7以降、iframeタグやscriptタグが表示できなくなった件の対応方法
WordPressサイトにAdvanced Custom Fields(以下 ACF)を導入している方はぜひお読みください。
ACFとは
ACFはWordPressの投稿や固定ページの入力項目をカスタマイズできるWordPressプラグインです。
ACFでは、ラジオボタンやファイルなどテキスト以外の入力フィールドを作ったり、必須・任意、文字数制限をつけるなど、WordPress標準のカスタムフィールドよりも高度な機能を実装することができます。
Advanced Custom Fields (ACF)
https://ja.wordpress.org/plugins/advanced-custom-fields/
ACF6.2.7以降、iframeタグやscriptタグが表示できなくなった
そのACFのバージョン6.2.7以降では、「the_field()」や「the_sub_field()」関数を使用した際に、iframeタグやscriptタグが出力されなくなりました。
具体的には「the_field()」で下記のコンテンツが全く表示されない、または正常に表示できなくなりました。
Googleマップの埋め込み
YouTube動画の埋め込み
Googleアナリティクス
GTM(Google Tag Manager)
皆さんのサイトは影響を受けていないでしょうか?
もし表示できなくなっていてもご安心ください。次の方法で簡単に対応できます。
対応方法
the_field()の代わりにecho get_field()を利用する
今回HTMLエスケープの対象となっている「the_field()」の代わりに「echo get_field()」を利用することで不具合を解消できます。
記述例はこちら。
修正前
<?php the_field('field_name'); ?>
修正後
<?php echo get_field('field_name'); ?>
この対応でiframeタグやscriptタグの値が正常に出力できるようになります。
バージョン6.2.7のアップデートは、ACFを利用している多数のサイトにとって非常に大きな影響を及ぼしかねない内容となりますので、まずはご自身のサイトを入念にチェックすることをお勧めします。
ソースはこちらです。
https://www.advancedcustomfields.com/blog/acf-6-2-7-security-release/
この記事が気に入ったらサポートをしてみませんか?