WordPress

カスタムHTMLブロック内で要素や属性が消える対策

記事内に商品プロモーションを含む場合があります

WordPressのブロックエディタ上のカスタムHTMLブロックに入力した一部のHTMLタグや属性が、投稿を保存するタイミングで消えてしまうことがありました。この記事ではその原因と対策を解説します。

タグや属性が消える原因

WordPressがデフォルトで備えている「kses」というライブラリによって、「特権管理者」以外のユーザーが入力したHTMLタグや属性の一部がセキュリティ対策として消去してしまうのが原因です。

開発者は普段から特権管理者で作業することが多いので、下位権限のユーザーがポストした投稿が崩れているのを見るまで、この現象に遭遇しないと思います。私も初見では何が起きてるのかわかりませんでした。

解決方法

この現象は、wp_kses_allowed_htmlのフィルターフックをカスタマイズすることで解決できます。

たとえば、

・divタグのstyle属性
・sourceタグのsrcset属性
・pictureタグ

の3つを消えないようにしたければ以下のようなコードをfunctions.phpに追加します。

function set_wp_kses_allowed_html($tags, $context)
{
  if ($context === 'post') {
    $tags['div']['style'] = true;
    $tags['source']['srcset'] = true;
    $tags['picture'] = true;
  }
  return $tags;
}
add_filter('wp_kses_allowed_html', 'set_wp_kses_allowed_html', 10, 2);

このような記述を消去されたくないタグや属性に対して追記していくだけです。



ご覧いただきありがとうございました!

各種SNS等で活動を行っております。よろしければ併せてフォローしていただけるとうれしいです!
X(旧Twitter)
Instagram
note
SNSではブログでは書けない内容や、管理人のプライベートな情報の発信を行っています。DM等でのご相談も随時承っておりますので、どうぞよろしくお願いいたしますm(__)m

「いいね!」と思ったら、クリックお願いいたします<m(__)m>
にほんブログ村 メンタルヘルスブログ 統合失調症へ 統合失調症ランキング
にほんブログ村 介護ブログ 障がい者福祉・介護へ 障がい者ランキング
にほんブログ村 企業ブログ IT・情報通信業へ IT・通信業ランキング
ABOUT ME
立花浩紀
Web制作を専門とするフリーランスです。就労継続支援B型の職業指導員をしていました。統合失調症の当事者でもあります。福祉ITラボではITと障害福祉を掛け合わせた情報を発信しています。放送大学 心理と教育コース 所属。社会福祉士養成課程。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA