我应该在‘admin_init’挂钩回调中使用is_admin()吗

时间:2010-11-14 作者:Steven

我添加了一个操作,其中包含以下行:

add_action( \'admin_init\', \'fb_init_scripts\');

我的函数如下所示:

  function fb_init_scripts() {
    //Only use these scripts in admin interface
    if (is_admin() ) {
        wp_enqueue_script(\'jquery-ui\',\'http://ajax.googleapis.com/ajax/libs/jqueryui/1.7/jquery-ui.min.js\',array(\'jquery\'));
    }
  }
在这种情况下,使用is_admin() 控制我是否在管理面板中,因为我在中运行此函数admin_init ?

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

是的,毫无意义。

admin_init 仅在管理区域激发(并耦合更多与AJAX功能相关的文件),因此is_admin() 无需检查。

它经常出现在前端和管理区域都启动的挂钩的示例中。

SO网友:Denis de Bernardy

正如拉斯特所说,这是多余的。由于与身份验证相关的原因,ajax接口恰好位于管理区域,WP认为它是管理区域的一部分,包括技术上不属于管理区域的情况。

也就是说,一个好的“技巧”是将适用的add\\u action()调用包装在if 街区:

if ( is_admin() ) {
  add_action(\'admin_init\', \'foo\');
}
这样做可以避免污染$wp_filter 前端为global。

更好的方法是,使用与管理相关的代码创建一个单独的文件,并且只将其包含在管理区域中(或者在需要时,使用\'load-$pagehook\' 行动)。您可以在此处看到如何执行此操作的示例:

http://wordpress.org/extend/plugins/sem-external-links/

结束