概要
tag_escape
関数は、無効な文字を除外したHTMLタグ名を取得するためのWordPressの関数です。この関数は特にHTMLコンテンツを取り扱う際に、ユーザーが入力したタグ名に対して安全性を確保し、HTMLエラーやXSS(クロスサイトスクリプティング)攻撃を防ぐために使用されます。主に以下のようなシナリオで利用されます。
- ユーザーが投稿したタグ名のバリデーション
- コメント入力のサニタイズ
- HTMLエディタでのタグ処理
- カスタムフィールドのタグ確認
- プラグインによるユーザー入力の安全確認
- テーマやテンプレートでのユーザー入力処理
- REST APIを介したデータ送信時の検証
- ウィジェットにおけるタグの使用
構文
string tag_escape( string $tag )
パラメータ
- $tag (string): エスケープを行うHTMLタグ名。
戻り値
(string): エスケープされたタグ名。
関連する関数
使用可能なバージョン
この関数はWordPress 1.5.0以降で使用できます。
コアファイルのパス
wp-includes/general-template.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: ユーザー入力のタグ確認
$input_tag = 'div<script>alert("XSS")</script>';
$safe_tag = tag_escape($input_tag);
echo $safe_tag; // outputs 'div'
このサンプルは、ユーザーからのタグ入力を受け取り、XSS攻撃の可能性がある無効な文字を除外して正しいタグ名を取得するものです。
サンプル2: 投稿記事のタグ処理
function sanitize_post_tags($tags) {
return array_map('tag_escape', $tags);
}
$tags = ['<script>', '<div>', 'valid_tag'];
$safe_tags = sanitize_post_tags($tags);
// $safe_tagsは['', 'div', 'valid_tag']となる
このサンプルは、投稿に含まれるタグの配列を受け取り、各タグをtag_escape
でサニタイズする関数です。
サンプル3: コメントフォームでの使用
if ($_POST['comment_tag']) {
$safe_comment_tag = tag_escape($_POST['comment_tag']);
// コメント処理
}
このサンプルでは、コメント投稿時にユーザーが提供したタグをエスケープすることで、セキュリティを強化しています。
サンプル4: ウィジェットでのタグ処理
class Custom_Widget extends WP_Widget {
public function widget($args, $instance) {
$tag = tag_escape($instance['tag']);
echo '<' . $tag . '>Content</' . $tag . '>';
}
}
このサンプルは、カスタムウィジェット内で、入力されたタグをエスケープして安全に使用する例です。
サンプル5: REST APIでのデータ送信時
add_action('rest_api_init', function() {
register_rest_route('myplugin/v1', '/tags/', array(
'methods' => 'POST',
'callback' => function($request){
$tag = tag_escape($request['tag']);
return $tag;
}
));
});
このサンプルは、REST APIを介して受け取ったタグデータをエスケープすることで、データのサニタイズを行う例です。