• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

プラグイン API/アクションフック一覧/admin init

提供: WordPress Codex 日本語版
移動先: 案内検索

説明

admin_init はユーザーが管理画面エリアにアクセスする際に他のフックより先に実行されます。このフックはパラメーターを持ちませんので、特定の関数をコールバックすることだけが可能です。

使い方

<?php add_action( 'admin_init', 'function_name' ); ?>

"function_name" は呼び出される関数名です。

例:アクセスコントロール

それでは、作例を見てみましょう。

/**
 * 管理画面へのアクセスを制限します。
 *
 * 管理者のみ管理画面へのアクセスを許可し、
 * それ以外のすべてのユーザーには代わりにメッセージを表示します。
 *
 * Ajaxリクエストは許可する必要があります。
 * 管理者以外のユーザーがフロントエンドからアクセスする可能性があるためです。
 */
function restrict_admin() {

	if ( ! current_user_can( 'manage_options' ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
		wp_die( __( 'You are not allowed to access this part of the site' ) );
	}
}
add_action( 'admin_init', 'restrict_admin', 1 );

このサンプルでは、Administrator Roleを持たないユーザーからの管理画面へのアクセスをブロックしています。

例:リダイレクトを使ったアクセスコントロール

このサンプルは最初のサンプルと似ていますが、特定の権限を持たないユーザーをホームページにリダイレクトします。

/**
 * 管理画面へのアクセスを制限します。
 *
 * 管理者のみ管理画面へのアクセスを許可し、
 * それ以外のすべてのユーザーはサイトのフロントページにリダイレクトします。
 *
 * Ajaxリクエストは許可する必要があります。
 * 管理者以外のユーザーがフロントエンドからアクセスする可能性があるためです。
 */
function restrict_admin_with_redirect() {

	if ( ! current_user_can( 'manage_options' ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
		wp_redirect( site_url() ); 
		exit;
	}
}

add_action( 'admin_init', 'restrict_admin_with_redirect', 1 );

例:新規設定を登録

もう一つのよくある使い方は、プラグインから新しい設定を登録する方法です。

function myplugin_settings() {
    register_setting( 'myplugin', 'myplugin_setting_1', 'intval' );
    register_setting( 'myplugin', 'myplugin_setting_2', 'intval' );
}
add_action( 'admin_init', 'myplugin_settings' );

register_setting() を参照。

最新英語版: WordPress Codex » Plugin_API/Action_Reference/admin_init最新版との差分