WordPress主题制作

  1. 主页
  2. 文档
  3. WordPress主题制作
  4. 引入外部CSS样式文件和JS脚本文件
  5. 后台登录管理页面加载

后台登录管理页面加载

在WordPress登录页面加载

将action替换为login_enqueue_scripts即可,例如

function enqueue_for_login(){
    wp_enqueue_style( 'core', 'style.css', false );
    wp_enqueue_script( 'my-js', 'filename.js', false );
}
add_action( 'login_enqueue_scripts', 'enqueue_for_login' );

如果想了解其它方式,可以仔细阅读wp-login.php。

在后台全局加载

同理,将action改为admin_enqueue_scripts

function my_enqueue() {
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'myscript.js' );
}
add_action( 'admin_enqueue_scripts', 'my_enqueue' );

想了解更多方法,请阅读wp-admin/admin-header.php。

在后台按需加载

仅用于后台某些页面的资源只在这些页面加载就好,不要到处使用,可以减少不必要的冲突。

1. $hook_suffix

首先我们可以根据admin_enqueue_scripts这个action传递的$hook_suffix参数来判断所处的页面,例如仅在edit.php加载,代码如下

1. $hook_suffix

首先我们可以根据admin_enqueue_scripts这个action传递的$hook_suffix参数来判断所处的页面,例如仅在edit.php加载,代码如下

function my_enqueue( $hook_suffix ) {
    if ( 'edit.php' == $hook_suffix ) {
       wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'myscript.js' );
    }   
}
add_action( 'admin_enqueue_scripts', 'my_enqueue' );

edit.php就是post、page或者custom post type的列表页面,编辑页面是post.php,新建页面是post-new.php,可以在不同页面打印$hook_suffix来了解它的使用方法。但由此也可看出它不能区分现在是在哪种post页面,需要借助更多的全局变量来判断。

2. $typenow

全局变量$typenow可以告诉我们当前的post type,例如仅在post的列表页面加载可以这样来判断

function my_enqueue( $hook_suffix ) {
    global $typenow;
    if ( 'edit.php' == $hook_suffix && $typenow == 'post' ) {
       wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'myscript.js' );
    }   
}
add_action( 'admin_enqueue_scripts', 'my_enqueue' );

3. get_current_screen()

上述两个全局变量可以区分大多数情况,若区分不了,可以试试使用get_current_screen()函数,该函数返回当前页面的post type、ID、base等信息,只能在admin_init之后使用,具体可以参考官方文档。

4. $pagenow

全局变量$pagenow的返回值与$hook_suffix类似,只是它在前台后台都可以访问,定义的更早,例如前三者在admin_init处没有值,但$pagenow却有。

它定义在wp-includes/vars.php中,该文件还定义了浏览器、服务器全局变量,例如$is_winIE、$is_apache,wp_is_mobile()函数也在这里出现。

上述全局变量和函数能区分大多数情况,但依然有无力的时候,这时可以借助$_REQUEST来判断。上述变量的值也是从$_REQUEST获取,但多一层值是否存在的检查,所以能用它们解决的就不要用$_REQUEST或者$_GET。

这篇文章对您有用吗?

我们要如何帮助您?