WordPressを管理していると、さまざまなプラグインの更新によって、突然サイトに表示問題が起こることがあります。特に、カスタムフィールドを豊富に扱うことができる人気プラグイン「Advanced Custom Fields(ACF)」の最新アップデートでは、セキュリティ強化のための変更が導入され、多くのユーザーが表示に関する問題に直面しています。
起こりうる問題点:自動的なHTMLエスケープ
最近のACFの更新では、the_field
やACFのショートコードを通じてレンダリングされるときに、安全でないHTMLが自動的にエスケープされるようになりました。この変更により、一部のフィールドの出力が修正されたとのメッセージがワードプレスの管理画面に表示されることがあります。特に、the_field
を頻繁に使用している場合、この変更によってサイトの表示に影響が出る可能性があります。
具体的な問題の特定方法
問題が発生している場所を特定するには、「Show details」をクリックします。そうすると、問題の箇所がどのフィールドに関連しているのかが表示されます。たとえば、「movfield – rendered via the_field」というメッセージがあれば、そのフィールドにthe_field
が使用されていることが原因とわかります。
どのケースで問題が発生するか
問題が発生するのは主に以下の二つのケースです。
- ショートコードを利用してtextareaやWYSIWYGフィールドからスクリプトやiframeを出力している場合
the_field()
やthe_sub_field()
を使ってtextareaやWYSIWYGフィールドからスクリプトやiframeを出力している場合
解決策:安全な出力方法への変更
問題の解決には、影響を受けるフィールドの出力方法を変更する必要があります。たとえば、iframeで読み込んでいた動画が表示されなくなった場合、以下のようにコードを変更します。
修正前:
the_field('field_name');
修正後:
echo wp_kses_post( get_field('field_name') );
この変更により、textarea
やWYSIWYGフィールドのスクリプトやiframe
に該当しない限り、the_field
を使用しても問題なく表示されるようになります。