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

説明

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

コメント

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