Advanced Custom Fields(以下「ACF」)のバージョン6.2.7以降、セキュリティ強化の仕様変更により、「the_field()」や「the_sub_field()」関数を使用した際に、iframeタグやscriptタグが出力されなくなる仕様変更が行われました。

これにより、具体的には以下のコンテンツが「the_field()」で全く表示されない、または正常に表示されなくなる可能性があります。

  • Googleマップの埋め込み
  • YouTube動画の埋め込み
  • Googleアナリティクス
  • Google Tag Manager

対応方法

これを解決するために、the_field()の代わりにecho get_field()を使用します。

Before

<?php the_field('field-name'); ?>

After

<?php the_field('field-name'); ?>

この変更により、iframeやscriptタグのコンテンツが再度正常に出力されるようになります。

仕様変更の背景

バージョン6.2.7のアップデートにおける、この仕様変更は、セキュリティの強化が主な目的です。iframeやscriptタグはクロスサイトスクリプティング(XSS)攻撃のリスクがあるため、これらの要素をデフォルトで出力しないように仕様が変更されました。

しかし echo get_field() を使用することで、安全な方法でこれらのコンテンツを再度表示できるようになります。

詳しくは、ACFの公式ブログ記事をご覧ください。

ACF公式ブログ:https://www.advancedcustomfields.com/blog/acf-6-2-7-security-release/