概要
check_admin_referer
関数は、Nonceを用いてフォームのパラメータを検証するための機能を提供します。この関数は、認証されたユーザーからのリクエストであることを確認し、CSRF(クロスサイトリクエストフォージェリ)攻撃から保護するためによく使用されます。以下は、check_admin_referer
関数がよく使われる状況の例です。
- 投稿やページの削除
- 設定の保存
- カスタムオプションの更新
- プラグインの設定変更
- ユーザーのロール変更
- フォームのデータ送信
- コンテンツの公開
- コメントの承認
構文
check_admin_referer( $action, $query_arg );
パラメータ
$action
(string) (必須): Nonceのアクション名を指定します。$query_arg
(string) (オプション): チェックするクエリ引数の名前(デフォルトは_wpnonce
)。
戻り値
Nonceが有効な場合は何も返さず、無効な場合はWordPressのエラーメッセージを表示します。
関連する関数
使用可能なバージョン
check_admin_referer
関数は、WordPress 2.0.0以降で使用可能です。
コアファイルのパス
wp-includes/pluggable.php
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
mu_plugin_loaded | 〇 |
registered_post_type | 〇 |
plugins_loaded | 〇 |
wp_roles_init | 〇 |
setup_theme | 〇 |
after_setup_theme | 〇 |
set_current_user | 〇 |
init | 〇 |
register_sidebar | 〇 |
wp_loaded | 〇 |
send_headers | 〇 |
parse_query | |
pre_get_posts | |
wp | 〇 |
template_redirect | 〇 |
get_header | |
wp_head | 〇 |
サンプルコード
サンプルコード 1
if ( isset( $_POST['submit'] ) ) {
check_admin_referer( 'my_action' );
// データ処理を続ける
}
このコードは、フォームが送信されたときにNonceを検証しています。Nonceが有効であれば、その後のデータ処理を続けます。
サンプルコード 2
function my_admin_function() {
check_admin_referer( 'my_action' );
// 設定を保存するための処理
}
add_action( 'admin_post_my_action', 'my_admin_function' );
このサンプルでは、特定の管理アクションにフックし、Nonceを検証しています。Nonceが無効な場合、その後の処理は実行されません。
サンプルコード 3
function my_custom_form() {
?>
<form method="POST" action="">
<?php wp_nonce_field( 'my_action' ); ?>
<input type="submit" name="submit" value="送信">
</form>
<?php
}
このコードは、Nonceを生成するためのフォームを作成しています。wp_nonce_field
関数を使うことで、Nonceが自動的に生成されます。
サンプルコード 4
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
if ( isset( $_POST['submit'] ) ) {
check_admin_referer( 'my_action' );
// 設定を更新する
}
この例では、ユーザーの権限を確認し、Nonceを検証した後に設定を更新します。これにより、適切なユーザーのみが変更できるようにしています。
サンプルコード 5
add_action( 'admin_post_update_settings', 'update_settings' );
function update_settings() {
check_admin_referer( 'settings_update' );
// 設定を保存する処理
}
このコードは、特定のアクションにフックしてNonceを検証しています。Nonceが正しければ、設定の更新処理が実行されます。