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

概要

check_ajax_referer関数は、AJAXリクエスト時にnonceパラメータを検証するために使用されます。これにより、セキュリティ上の脅威から保護でき、悪意のあるリクエストを防止することができます。この関数は、以下のような機能を実装する際によく使用されます。

  1. フォームの送信処理
  2. カスタムAJAXエンドポイントの作成
  3. プラグインによるデータの取得/更新
  4. ユーザーアクションの記録
  5. セッションの管理
  6. ゲームやコンテストのスコアボード更新
  7. 動的コンテンツのローディング
  8. リアルタイム通知システム

構文

check_ajax_referer( $action, $query_arg, $die );

パラメータ

  • $action (string) – nonceを生成する際に使用するアクション名(必須)。
  • $query_arg (string) – AJAXリクエストのクエリパラメータ名(任意、デフォルトは ‘nonce’)。
  • $die (bool) – 非推奨のnonceが見つからない場合にスクリプトを終了するかどうか(任意、デフォルトは true)。

戻り値

  • 成功時は、nonceが有効である場合には何も返さず、失敗時にはWordPressがエラーメッセージを表示します。

関連する関数

使用可能なバージョン

  • WordPress 2.8以降

コアファイルのパス

  • 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: 非ceとAJAXリクエストの処理

add_action('wp_ajax_my_action', 'my_ajax_handler');
function my_ajax_handler() {
    check_ajax_referer('my_nonce_action', 'nonce');

    // Nonceが有効であれば処理を続行
    wp_send_json_success('AJAXリクエストが成功しました');
}

このコードは、AJAXリクエストを受け取り、nonceの検証を行い、成功メッセージを返します。

サンプル2: フロントエンドからのデータ送信

add_action('wp_enqueue_scripts', 'my_enqueue_scripts');
function my_enqueue_scripts() {
    wp_enqueue_script('my-script', get_template_directory_uri() . '/js/my-script.js', array('jquery'), null, true);
    wp_localize_script('my-script', 'my_ajax_object', array('ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('my_nonce_action')));
}

このコードは、AJAXリクエストに必要なnonceを生成し、JavaScriptにデータを渡します。

サンプル3: プラグインによる非同期処理

add_action('wp_ajax_my_plugin_action', 'my_plugin_ajax_handler');
function my_plugin_ajax_handler() {
    check_ajax_referer('my_plugin_nonce', 'nonce');

    // プラグインの処理
    $result = my_plugin_do_something();
    wp_send_json_success($result);
}

このコードは、特定のプラグインのAJAXリクエストを処理し、nonceを確認した後、処理結果をJSON形式で返します。

サンプル4: フロントエンドからのGETリクエスト処理

add_action('wp_ajax_nopriv_my_public_action', 'my_public_ajax_handler');
function my_public_ajax_handler() {
    check_ajax_referer('my_public_nonce', 'nonce');

    // 処理を続行
    wp_send_json_success('公開アクセスのAJAXリクエストが成功しました');
}

このコードは、未ログインのユーザーからのAJAXリクエストを処理し、nonce検証を行います。

サンプル5: エラー処理の実装

add_action('wp_ajax_my_error_handling_action', 'my_error_handling_handler');
function my_error_handling_handler() {
    if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'my_nonce_action')) {
        wp_send_json_error('無効なnonce');
    }

    // 正常な処理
    wp_send_json_success('リクエストが成功しました');
}

このコードは、nonceが無効な場合にエラーメッセージを返す処理を実装しています。

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


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