概要
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のドキュメントやリファレンスを元に作成されています。