説明
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

コメント