WordPressで安全に出力するためのエスケープ関数まとめ

WordPressでは、テーマやプラグインの開発時に「安全な出力」を行うことが重要です。特に、外部から受け取った値やユーザー入力をそのまま画面に表示すると、XSS(クロスサイトスクリプティング)などのセキュリティリスクにつながります。
こうしたリスクを避けるためには、WordPressが提供するエスケープ(無害化)関数を正しく利用することが欠かせません。
本記事では、WordPressでよく使われるエスケープ関数と、その使い分けをまとめます。テーマ編集の基礎を理解したい場合は、関連記事「WordPressでテーマファイルを編集する方法(初心者向け)」も参考になります。
Contents
エスケープとは?
エスケープとは、危険な文字列を無害化して安全に表示するための処理です。
Webサイトでは、攻撃につながる可能性のある記号やタグをそのまま表示しないように加工します。
WordPressでは、用途に応じて最適化されたエスケープ関数が複数用意されています。
1. 基本のエスケープ関数
■ esc_html()
画面にHTMLとして表示したくないテキストを安全に出力する場合に利用します。
echo esc_html( $text );■ esc_attr()
HTML属性内で出力する値に使用します。
<input type="text" value="<?php echo esc_attr( $value ); ?>">■ esc_url()
URLを出力するときに使用します。
外部リンク、画像URL、フォームの action などに利用します。
echo esc_url( $url );■ esc_js()
JavaScript内で使用する文字列をエスケープします。
echo esc_js( $text );■ wp_kses()
許可された HTML タグだけを残して、その他は除去します。
制限付きでユーザーに HTML を許可したい場合などに便利です。
$allowed = [
'strong' => [],
'em' => [],
];
echo wp_kses( $text, $allowed );2. よく利用する関連関数
■ wp_kses_post()
投稿本文で許可される HTML タグと同じ基準でフィルタリングします。
投稿内容を安全に出力したい場合に使用されます。
■ sanitize_text_field()
エスケープではなく「サニタイズ(入力の無害化)」ですが、
入力値の処理で頻繁に利用するため併せて押さえておく必要があります。
3. 用途別の使い分け
| 用途 | 推奨する関数 |
|---|---|
| テキストとして表示したい | esc_html() |
| HTML属性に値を入れたい | esc_attr() |
| URLを出力したい | esc_url() |
| JavaScript内で利用 | esc_js() |
| 一部のHTMLのみ許可したい | wp_kses() |
| 投稿本文のHTMLを安全に出力 | wp_kses_post() |
4. functions.phpで利用する場合のポイント
functions.php に記述するカスタムコードでも、エスケープの考え方は同じです。
テンプレートタグを出力する際は常にエスケープする意識が重要になります。
条件分岐の書き方やテーマカスタマイズの安全な手順については、以下の関連記事も参考になります。
5. エスケープが必要な主な場面
- テンプレートファイルでの値の出力
- カスタムフィールドの値を表示するとき
- フォームの value / action / href を出力するとき
- JavaScript内に PHP 変数を渡すとき
- 外部APIの結果を出力するとき
WordPress開発では、「何をどこに出力するのか」に応じて適切な関数を選ぶことがポイントになります。
まとめ
WordPressで安全に開発するためには、正しいエスケープ処理が欠かせません。esc_html() や esc_attr() などの基本的な関数に加えて、状況に応じて wp_kses() なども使い分けることで、安全で安定したサイト運営につながります。
サイトの品質を保つうえでも、エスケープ処理は重要な基本要素です。テーマ編集やカスタマイズを進める際は、常に安全な出力を意識して実装することが大切です。

