概要
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が正しければ、設定の更新処理が実行されます。