説明
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

コメント