WordPressとACFの更新による表示問題に直面したらどうする?

WordPressを管理していると、さまざまなプラグインの更新によって、突然サイトに表示問題が起こることがあります。特に、カスタムフィールドを豊富に扱うことができる人気プラグイン「Advanced Custom Fields(ACF)」の最新アップデートでは、セキュリティ強化のための変更が導入され、多くのユーザーが表示に関する問題に直面しています。

起こりうる問題点:自動的なHTMLエスケープ

最近のACFの更新では、the_fieldやACFのショートコードを通じてレンダリングされるときに、安全でないHTMLが自動的にエスケープされるようになりました。この変更により、一部のフィールドの出力が修正されたとのメッセージがワードプレスの管理画面に表示されることがあります。特に、the_fieldを頻繁に使用している場合、この変更によってサイトの表示に影響が出る可能性があります。

具体的な問題の特定方法

問題が発生している場所を特定するには、「Show details」をクリックします。そうすると、問題の箇所がどのフィールドに関連しているのかが表示されます。たとえば、「movfield – rendered via the_field」というメッセージがあれば、そのフィールドにthe_fieldが使用されていることが原因とわかります。

どのケースで問題が発生するか

問題が発生するのは主に以下の二つのケースです。

  1. ショートコードを利用してtextareaやWYSIWYGフィールドからスクリプトやiframeを出力している場合
  2. the_field()the_sub_field()を使ってtextareaやWYSIWYGフィールドからスクリプトやiframeを出力している場合

解決策:安全な出力方法への変更

問題の解決には、影響を受けるフィールドの出力方法を変更する必要があります。たとえば、iframeで読み込んでいた動画が表示されなくなった場合、以下のようにコードを変更します。

修正前:

the_field('field_name');

修正後:

echo wp_kses_post( get_field('field_name') );

この変更により、textareaWYSIWYGフィールドのスクリプトやiframeに該当しない限り、the_fieldを使用しても問題なく表示されるようになります。

この記事を書いた人

田島 佑清

2児の父 / ネクストメディア株式会社のエンジニア