概要
wp_kses_post
関数は、WordPressにおいて特定のHTMLや短縮タグを許可しながら、投稿内容をサニタイズするために使用される便利な関数です。この関数は、ユーザーから入力されたデータや投稿の内容を処理する際に、セキュリティを考慮して不正なタグや属性を排除するために使われます。
この関数がよく使用される場面には、以下のようなものがあります。
1. ユーザーの投稿内容のサニタイズ
2. コメントのサニタイズ
3. ユーザープロファイルの説明の処理
4. プラグインのエントリーのフィルタリング
5. ウィジェット内のコンテンツの安全化
6. 特定のショートコードの出力の保護
7. カスタムフィールドのデータのサニタイズ
8. テーマのオプションでの入力値の安全化
構文
wp_kses_post( $data );
パラメータ
- $data (string): サニタイズしたい投稿内容。これはユーザーからの入力やデータベースからの出力など、HTMLを含む文字列です。
戻り値
- (string): サニタイズされた結果の文字列。指定されたタグと属性のみが残り、その他の不正な部分は削除されます。
関連する関数
使用可能なバージョン
wp_kses_post
関数は、WordPress 3.0 以降で利用可能です。
コアファイルのパス
この関数は、wp-includes/formatting.php
に含まれています。
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | 〇 |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | 〇 |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | 〇 |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード 1: 投稿内容のサニタイズ
$post_content = '<script>alert("XSS");</script><p>This is safe content.</p>';
$sanitized_content = wp_kses_post($post_content);
// 結果: '<p>This is safe content.</p>'
このコードは、ユーザーが入力した投稿内容から不正なスクリプトを排除し、安全な段落だけを残します。
サンプルコード 2: コメントの処理
$comment = '<strong>Hello World!</strong>';
$sanitized_comment = wp_kses_post($comment);
// 結果: '<strong>Hello World!</strong>'
ここでは、コメント内の強調タグをサニタイズすることなく残す例です。
サンプルコード 3: カスタムフィールドでの使用
$custom_field = '<div class="custom">Custom Data</div>';
$sanitized_field = wp_kses_post($custom_field);
// 結果: '<div class="custom">Custom Data</div>'
このコードでは、カスタムフィールドから不正なタグを排除せず、クラス属性を含むdivを許可します。
サンプルコード 4: ウィジェットでのサニタイズ
$widget_content = '<i>Italic Text</i>';
$safe_widget_content = wp_kses_post($widget_content);
// 結果: '<i>Italic Text</i>'
ウィジェット内のテキストのスタイルを保持しつつ、他の不正な部分を削除します。
サンプルコード 5: テーマオプションのサニタイズ
$theme_option = '<h1>Heading</h1>';
$sanitized_option = wp_kses_post($theme_option);
// 結果: '<h1>Heading</h1>'
テーマのオプション設定に保存されたデータを安全に処理する例です。