check_admin_referer()


WordPress関数check_admin_referer()は、管理画面でのリクエストの正当性を検証するために使用されます。

構文

check_admin_referer( string $action = -1, string $query_arg = '_wpnonce' );

引数の説明:

  • $action (string) — リクエストの正当性を確認するために使用するアクション名。
  • $query_arg (string) — 検証に使用するクエリ文字列の引数名。デフォルトは_wpnonce

例 1: フォーム送信時の確認

以下の例は、フォーム送信時にnonceを確認する方法を示しています。

<?php
if ( isset( $_POST['submit'] ) ) {
    check_admin_referer( 'example_action' );
    // 処理を続行
}
?>

例 2: クエリ引数のカスタマイズ

デフォルトの_wpnonceではなく、カスタム引数名を使用します。

<?php
if ( isset( $_GET['custom_nonce'] ) ) {
    check_admin_referer( 'example_action', 'custom_nonce' );
    // 処理を続行
}
?>

例 3: メタボックス内での使用

メタボックス内でnonceを検証します。

<?php
add_action( 'save_post', function( $post_id ) {
    if ( isset( $_POST['example_nonce'] ) ) {
        check_admin_referer( 'example_action', 'example_nonce' );
        // 保存処理
    }
} );
?>

例 4: AJAXリクエストの確認

AJAXリクエストでnonceを確認します。

<?php
add_action( 'wp_ajax_example_action', function() {
    check_admin_referer( 'example_action' );
    // AJAX処理
    wp_send_json_success();
} );
?>

例 5: プラグイン設定ページでの使用

プラグインの設定ページでnonceを確認します。

<?php
if ( isset( $_POST['update_settings'] ) ) {
    check_admin_referer( 'update_plugin_settings' );
    // 設定更新処理
}
?>

注意事項

  • check_admin_referer()は、CSRF攻撃を防ぐために重要です。
  • 使用する際は、nonceの生成にwp_nonce_field()を活用してください。
  • 検証に失敗した場合、WordPressは403 Forbiddenエラーを返します。

関連機能: