ワードプレスのwp_nonce_field関数の使用方法・解説

概要

wp_nonce_field関数は、HTMLフォーム内にセキュリティチェック用のNonce(ワンタイムトークン)を追加するために使用されます。このNonceは、CSRF(クロスサイトリクエストフォージェリ)攻撃を防ぐために設計されており、フォームの送信者が信頼できるかどうかを確認する手段になります。一般的には以下のような機能を実装する際に利用されます。

  1. ユーザーの権限確認
  2. フォームデータの検証
  3. 設定の保存
  4. カスタムデータの送信
  5. プラグインの設定画面
  6. 投稿の編集
  7. AJAXリクエストの保護
  8. 管理者向けのアクション確認

構文

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

この関数について質問する


上の計算式の答えを入力してください