wp_ajax_nopriv_{action} フックの使い方|説明・引数・注意点

説明

wp_ajax_nopriv_(フック)() は、ログインしていないユーザー向けの Ajax アクションを登録するための仕組みです。

基本構文

add_action( 'wp_ajax_nopriv_{action}', callable $callback )

引数

  • {action}:Ajaxで送る action パラメーターの値

戻り値

フックなので戻り値はありません。

使い方(サンプル)

add_action( 'wp_ajax_nopriv_my_action', 'my_ajax_handler' );
add_action( 'wp_ajax_my_action', 'my_ajax_handler' );

注意点

  • ログイン中のユーザー向けには wp_ajax_{action} を使います。両方に登録すれば、誰でも利用できます。
  • 公開された処理になるため、nonce検証と入力値のサニタイズが必須です。

実務での使いどころ

  • ログインしていない訪問者からの、Ajaxリクエストを、受け付けるとき。
  • お問い合わせや、いいねボタンなど、フロントのAjax処理を、作るとき。

よくあるミスと対処

  • ログインしていない訪問者用のフックだけを、登録している。ログイン中のユーザー用には、wp_ajax_{action} も登録する。
  • 処理の最後に、wp_die() や wp_send_json() を呼んでいない。応答の最後に、0 が付く。
  • ログインしていないユーザーからの入力を、検証・サニタイズしていない。

NG例

add_action( 'wp_ajax_nopriv_my_action', 'my_handler' ); // ログイン中のユーザーが呼ぶと、0 が返る

OK例

add_action( 'wp_ajax_my_action', 'my_handler' );
add_action( 'wp_ajax_nopriv_my_action', 'my_handler' );

function my_handler() {
	check_ajax_referer( 'my_ajax_action', 'nonce' );
	wp_send_json_success( array( 'ok' => true ) );
}

使い分け早見表

フック 対象のユーザー
wp_ajax_nopriv_{action} ログインしていない訪問者
wp_ajax_{action} ログイン中のユーザー

関連項目

check_ajax_referer()、wp_send_json_success()

公式リファレンス:wp_ajax_nopriv_%e2%80%8baction | Hook | WordPress Developer Resources

コメント

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