当前浏览:首页 / WordPress钩子 / admin_init

do_action( 'admin_init' )

在初始化管理界面或脚本时触发

adminmore...

init

  • admin_init 在初始化管理界面或脚本时触发
  • init 在WordPress完成加载后未发送头数据之前触发
  • widgets_init 在注册所有默认WordPress小工具后触发

描述

注意,这不仅仅在面向用户的管理屏幕上运行,它也在admin-ajax.php和admin-post.php上运行。

这大致类似于更常见的‘init’钩子,它较早地触发。


更多信息

当用户访问管理区域时,admin_init在任何其他钩子之前触发。

此挂钩不提供任何参数,因此只能用于回调指定的函数。


源码

查看源码 官方文档


更新日志

版本描述
2.5.0开始引入

使用示例

  • 示例1

    从Codex迁移的示例:

    在本例中,我们阻止没有管理员角色的用户访问管理面板。

    /**
     * Restrict access to the administration screens.
     *
     * Only administrators will be allowed to access the admin screens,
     * all other users will be shown a message instead.
     *
     * We do allow access for Ajax requests though, since these may be
     * initiated from the front end of the site by non-admin users.
     */
    function restrict_admin() {
    
    	if ( ! current_user_can( 'manage_options' ) && ( ! wp_doing_ajax() ) ) {
    		wp_die( __( 'You are not allowed to access this part of the site' ) );
    	}
    }
    add_action( 'admin_init', 'restrict_admin', 1 );
    
  • 示例2

    从Codex迁移的示例:

    此示例的工作方式与第一个示例类似,但它会自动将缺乏指定能力的用户重定向到主页。

    /**
     * Restrict access to the administration screens.
     *
     * Only administrators will be allowed to access the admin screens,
     * all other users will be automatically redirected to the front of
     * the site instead.
     *
     * We do allow access for Ajax requests though, since these may be
     * initiated from the front end of the site by non-admin users.
     */
    function restrict_admin_with_redirect() {
    
    	if ( ! current_user_can( 'manage_options' ) && ( ! wp_doing_ajax() ) ) {
    		wp_safe_redirect( site_url() ); 
    		exit;
    	}
    }
    
    add_action( 'admin_init', 'restrict_admin_with_redirect', 1 );
    
  • 示例3

    从Codex迁移的示例:

    另一个典型用法是注册一个新设置供插件使用:

    function myplugin_settings() {
        register_setting( 'myplugin', 'myplugin_setting_1', 'intval' );
        register_setting( 'myplugin', 'myplugin_setting_2', 'intval' );
    }
    add_action( 'admin_init', 'myplugin_settings' );
    
  • 示例4
    /**
     * Fire on the initialization of the admin screen or scripts.
     */
    function the_dramatist_fire_on_admin_screen_initialization() {
        // Do stuff. Say we will echo "Hello World".
        echo 'Hello World';
    }
    add_action( 'admin_init', 'the_dramatist_fire_on_admin_screen_initialization' );
    

    如果用户在管理屏幕中,上述代码只会回显“Hello World”。