概要
wp_nonce_field関数は、HTMLフォーム内にセキュリティチェック用のNonce(ワンタイムトークン)を追加するために使用されます。このNonceは、CSRF(クロスサイトリクエストフォージェリ)攻撃を防ぐために設計されており、フォームの送信者が信頼できるかどうかを確認する手段になります。一般的には以下のような機能を実装する際に利用されます。
- ユーザーの権限確認
- フォームデータの検証
- 設定の保存
- カスタムデータの送信
- プラグインの設定画面
- 投稿の編集
- AJAXリクエストの保護
- 管理者向けのアクション確認
構文
wp_nonce_field( $action, $name, $referer, $echo );
パラメータ
$action(string) (必須): Nonceのアクション名(識別子)。$name(string) (オプション): フォームパラメータの名前。デフォルトは_wpnonce。$referer(bool) (オプション): リファラーを隠すためのフラグ。デフォルトはtrue。$echo(bool) (オプション): 出力を行うかどうか。デフォルトはtrue。
戻り値
この関数は値を返しませんが、Nonce用フォームパラメータを表示します(出力します)。
関連する関数
使用可能なバージョン
wp_nonce_field関数は、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: シンプルなフィールド作成
このサンプルでは、wp_nonce_fieldを使ってシンプルなNonceフィールドを生成します。
function my_form() {
?>
<form method="post">
<?php wp_nonce_field('my_action'); ?>
<input type="submit" value="送信" />
</form>
<?php
}
サンプル2: 複数のNonceフィールド
このサンプルでは、異なるアクションに対して複数のNonceフィールドを作成します。
function my_multiple_nonce_form() {
?>
<form method="post">
<?php wp_nonce_field('action_one'); ?>
<?php wp_nonce_field('action_two', 'my_nonce_two'); ?>
<input type="submit" value="送信" />
</form>
<?php
}
サンプル3: リファラを隠す
リファラを隠したNonceフィールドを生成するサンプルです。
function my_nonce_form_no_referer() {
?>
<form method="post">
<?php wp_nonce_field('my_action', '_my_nonce', false); ?>
<input type="submit" value="送信" />
</form>
<?php
}
サンプル4: 出力を変更
出力を調整する方法を示すサンプルです。
function my_custom_nonce_output() {
$nonce = wp_nonce_field('my_action', '_my_nonce', true, false);
echo $nonce;
}
サンプル5: Nonce検証
生成したNonceを検証するサンプルです。
function my_process_form() {
if (isset($_POST['_my_nonce']) && wp_verify_nonce($_POST['_my_nonce'], 'my_action')) {
// Nonceが有効な場合の処理
} else {
// Nonceが無効な場合の処理
}
}
これらのサンプルコードは、著作権フリーのものであり、WordPressのドキュメントやリファレンスを元に作成されています。