概要
wp_create_nonce
関数は、WordPressのセキュリティ機能の一環として使用され、nonce用ハッシュ値を生成するための関数です。この関数は、特に以下のような機能を実装する際によく使用されます。
- フォームのCSRF対策
- AJAXリクエストのセキュリティ強化
- ユーザやデータの削除確認
- 特定の権限を持つユーザーのみのアクションを許可
- 管理画面でのアクションの安全性向上
- プラグイン間のセキュリティ管理
- ダッシュボードウィジェットの設定保存
- カスタムポストタイプの操作安全性確保
構文
string wp_create_nonce( string $action = -1 );
パラメータ
$action
(string, optional): nonceの目的を識別するための文字列。デフォルトは-1
。
戻り値
- (string): 生成されたnonceの値。
関連する関数
バージョン情報
- この関数はWordPress 2.0.0から使用可能です。
コアファイルのパス
wp-includes/pluggable.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: nonceの生成と使用
この例では、フォームを生成する際にnonceを作成し、それを隠しフィールドとして追加しています。
$nonce = wp_create_nonce('my_action');
echo '<input type="hidden" name="my_nonce" value="' . esc_attr($nonce) . '" />';
サンプルコード 2: nonceの確認
この例では、送信されたフォームのnonceを検証します。
if (isset($_POST['my_nonce']) && wp_verify_nonce($_POST['my_nonce'], 'my_action')) {
// nonceが正しい場合の処理
} else {
// nonceが無効または不正な場合の処理
}
サンプルコード 3: AJAXリクエストにnonceを埋め込む
このコードでは、AJAXリクエストにnonceを追加する手法を示しています。
jQuery.post(ajaxurl, {
action: 'my_ajax_action',
my_nonce: '<?php echo wp_create_nonce('my_ajax_action'); ?>',
// その他パラメータ
});
サンプルコード 4: URLにnonceを追加
この例では、nonceをURLに追加し、他のページへのセキュリティを強化しています。
$url = admin_url('admin-post.php?action=my_action&_wpnonce=' . wp_create_nonce('my_action'));
echo '<a href="' . esc_url($url) . '">実行する</a>';
サンプルコード 5: トランジションAPIとnonceを使用
この例では、トランジションAPIを介してnonceを生成し、カスタムアクションを呼び出しています。
add_action('init', function() {
if (isset($_GET['my_nonce']) && wp_verify_nonce($_GET['my_nonce'], 'my_action')) {
// nonceが正しい場合の処理
}
});
これらのサンプルコードは、実際のプロジェクトでノンスを利用するための一般的な使用方法を示しています。