説明
sanitize_text_field() は、入力された文字列から、HTMLタグ・改行・余分な空白を取り除く関数です。フォームのテキスト入力の保存前に使う基本のサニタイズです。
基本構文
sanitize_text_field( string $str ): string
引数
$str:処理する文字列
戻り値
サニタイズ済みの文字列。
使い方(サンプル)
$name = sanitize_text_field( wp_unslash( $input ) );
注意点
- 改行を残したい
textareaの入力にはsanitize_textarea_field()を使います。 - 配列には使えません。要素ごとに適用します。
- フォームから受け取った値(スーパーグローバル由来)は、先に
wp_unslash()を通します。
実務での使いどころ
- 1行のテキスト入力(名前、タイトルなど)を、保存する前に整えるとき。
- フォームの入力値を、受け取って、保存するとき。
よくあるミスと対処
- 複数行のテキストに使い、改行が失われる。複数行には
sanitize_textarea_field()を使う。 - HTMLを許可したい値に使っている。タグが、すべて取り除かれる。HTMLを許可するなら
wp_kses_post()。 $_POSTの値を、wp_unslash()せずに渡している。- サニタイズだけで、出力時のエスケープを省いている。出力時は、
esc_html()を通す。
NG例
update_post_meta( $post_id, 'memo', sanitize_text_field( $_POST['memo'] ) ); // 複数行で、改行が失われる。unslash もない
OK例
update_post_meta( $post_id, 'title', sanitize_text_field( wp_unslash( $_POST['title'] ) ) );
使い分け早見表
| 入力 | 使う関数 |
|---|---|
| 1行のテキスト | sanitize_text_field() |
| 複数行のテキスト | sanitize_textarea_field() |
| HTMLを含む入力 | wp_kses_post() |
関連項目
sanitize_textarea_field()、wp_unslash()、wp_kses_post()、esc_html()
公式リファレンス:sanitize_text_field() | Function | WordPress Developer Resources

コメント