check_ajax_referer() の使い方|説明・引数・注意点

説明

check_ajax_referer() は、Ajaxリクエストのnonceを検証する関数です。

基本構文

check_ajax_referer( string|int $action = -1, string|false $query_arg = false, bool $stop = true ): int|false

引数

  • $action:アクション名
  • $query_arg:nonceのパラメーター名
  • $stop:失敗時に処理を終了するか

戻り値

有効なら 1 か 2。

使い方(サンプル)

check_ajax_referer( 'my_action', 'nonce' );

注意点

  • Ajaxのハンドラー関数の先頭で呼びます。
  • 失敗時、既定では die します。

実務での使いどころ

  • Ajaxの処理の最初で、nonceを検証するとき。
  • 管理画面の、Ajaxの処理を、保護するとき。

よくあるミスと対処

  • JavaScriptから送る、nonceのキー名と、この関数の第2引数が、合っていない。
  • アクション名が、wp_create_nonce() で作ったときと、違う。
  • nonceの検証だけで、権限の確認を省いている。権限は、current_user_can() で確認する。

NG例

check_ajax_referer( 'my_action' ); // JavaScriptが、別のキー名で送っていると、失敗する

OK例

check_ajax_referer( 'my_ajax_action', 'nonce' );
if ( ! current_user_can( 'edit_posts' ) ) {
	wp_send_json_error( null, 403 );
}

使い分け早見表

関数 特徴
check_ajax_referer() Ajax用。失敗すると、処理を止める
check_admin_referer() 管理画面のフォーム・リンク用
wp_verify_nonce() 戻り値で判定できる

関連項目

wp_verify_nonce()、wp_create_nonce()

公式リファレンス:check_ajax_referer() | Function | WordPress Developer Resources

コメント

タイトルとURLをコピーしました