check_ajax_referer()


WordPressの関数check_ajax_referer()は、AJAXリクエストが正当なものであるかどうかを確認するために使用されます。この関数は、セキュリティを確保するためにnonce(数字的なワンタイムトークン)を検証します。

シンタックス

check_ajax_referer( string $action = '-1', string|false $query_arg = false, bool $die = true );

引数の説明:

  • $action (string) — 検証するnonceのアクション名。
  • $query_arg (string|false) — リクエスト内でnonceを探すキー名。デフォルトでは自動的に探します。
  • $die (bool) — 検証が失敗した場合にスクリプトを停止するかどうかを指定します。デフォルトはtrueです。

例 1: デフォルトのnonce検証

add_action( 'wp_ajax_my_action', function() {
    check_ajax_referer( 'my_action' );
    echo '検証成功';
    wp_die();
} );

例 2: カスタムquery_argを使用

add_action( 'wp_ajax_custom_action', function() {
    check_ajax_referer( 'custom_action', 'custom_nonce' );
    echo 'カスタムnonceの検証成功';
    wp_die();
} );

例 3: 検証失敗時にスクリプトを停止しない

add_action( 'wp_ajax_optional_die', function() {
    if ( ! check_ajax_referer( 'optional_action', 'nonce', false ) ) {
        echo '検証失敗';
    } else {
        echo '検証成功';
    }
    wp_die();
} );

例 4: 投稿を保存するAJAXリクエスト

add_action( 'wp_ajax_save_post', function() {
    check_ajax_referer( 'save_post_action' );
    $post_id = absint( $_POST['post_id'] );
    wp_update_post( [ 'ID' => $post_id, 'post_title' => $_POST['title'] ] );
    echo '投稿が更新されました';
    wp_die();
} );

例 5: 非ログインユーザーの処理

add_action( 'wp_ajax_nopriv_guest_action', function() {
    check_ajax_referer( 'guest_action' );
    echo 'ゲストユーザーのリクエストを受け付けました';
    wp_die();
} );

注意事項

  • check_ajax_referer()を使用することで、AJAXリクエストのセキュリティが向上します。
  • die引数をfalseに設定すると、カスタムエラーハンドリングが可能です。

関連機能: