wp_kses() の使い方|説明・引数・注意点

説明

wp_kses() は、許可したHTMLタグ・属性だけを残し、それ以外を削除する関数です。

基本構文

wp_kses( string $content, array[]|string $allowed_html, string[] $allowed_protocols = array() ): string

引数

  • $content:フィルタリングする文字列
  • $allowed_html:許可するタグと属性
  • $allowed_protocols:許可するプロトコル

戻り値

サニタイズ済みの文字列。

使い方(サンプル)

$html = wp_kses( $input, array(
	'a'  => array( 'href' => array() ),
	'br' => array(),
) );

注意点

  • 許可するタグと属性を、配列で厳密に指定します。
  • 投稿本文に使われる標準の許可リストでよければ wp_kses_post() が便利です。

実務での使いどころ

  • ユーザーが入力した、HTMLのうち、許可するタグ・属性だけを残して、出力するとき。
  • コメントや、フォームの入力に、一部のHTMLを許可するとき。

よくあるミスと対処

  • $allowed_html を、空の配列にしている。すべてのタグが取り除かれる。
  • 属性を、許可していない。href など、使う属性も、リストに書く。
  • 文章だけを出力するのに、使っている。テキストなら esc_html() で十分。

NG例

echo wp_kses( $html, array( 'a' => array() ) ); // href が許可されておらず、リンクにならない

OK例

$allowed = array(
	'a'      => array( 'href' => array(), 'target' => array() ),
	'strong' => array(),
	'br'     => array(),
);
echo wp_kses( $html, $allowed );

使い分け早見表

関数 特徴
wp_kses() 許可するタグ・属性を、自分で指定する
wp_kses_post() 投稿の本文と同じ、許可の設定
wp_strip_all_tags() タグを、すべて取り除く

関連項目

wp_kses_post()、esc_html()、wp_strip_all_tags()

公式リファレンス:wp_kses() | Function | WordPress Developer Resources

コメント

タイトルとURLをコピーしました