説明
wp_verify_nonce() は、nonceが正しいかを検証する関数です。
基本構文
wp_verify_nonce( string $nonce, string|int $action = -1 ): int|false
引数
$nonce:検証するnonce$action:生成時のアクション名
戻り値
有効なら 1(生成から12時間以内)または 2(12〜24時間)。無効なら false。
使い方(サンプル)
if ( ! wp_verify_nonce( $nonce, 'my_action' ) ) {
wp_die( '不正なリクエストです' );
}
注意点
- データを変更する処理では、権限チェックとあわせて必ず行います。
- フォームから受け取ったnonceは、
sanitize_text_field( wp_unslash( ... ) )を通すとより安全です。
実務での使いどころ
- フォームやAjaxで送られた、nonceが正しいかを、判定するとき(戻り値で、処理を分けたいとき)。
よくあるミスと対処
- 戻り値を、
trueと比べている。戻り値は、1・2(有効)か、false。 $_POSTの値を、wp_unslash()や、サニタイズせずに渡している。- nonceの確認だけで、権限の確認を省いている。権限は、
current_user_can()で確認する。
NG例
if ( true === wp_verify_nonce( $_POST['my_nonce'], 'my_action' ) ) { // 戻り値は 1 か 2
// ...
}
OK例
if ( isset( $_POST['my_nonce'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['my_nonce'] ) ), 'my_action' ) ) {
// 検証に成功
}
使い分け早見表
| 関数 | 特徴 |
|---|---|
wp_verify_nonce() |
戻り値で判定できる |
check_admin_referer() |
失敗すると、処理を止める(管理画面向け) |
wp_create_nonce() |
nonceを作る |
関連項目
wp_create_nonce()、check_admin_referer()、check_ajax_referer()
公式リファレンス:wp_verify_nonce() | Function | WordPress Developer Resources

コメント