WordPress如何只在插件管理页面调用CSS样式和JS脚本文件

插件开发中避免不了要在管理页面调用CSS样式和JS脚本等文件,如果挂载到 WordPress 钩子 admin_enqueue_scripts 时,会在WP后台全站输出,在插件管理页面外调用这里文件实属资源浪费,因此本文就可以来聊聊如何只在插件管理页面调用CSS样式和JS脚本文件。

首先需要将 add_menu_page() 返回赋值给 $yjw_settings_page_hook 且要全局调用。

add_action('admin_menu', 'yjw_custom_menu_page');
function yjw_custom_menu_page(){
	global $yjw_settings_page_hook; //名称可自由定义
	$yjw_settings_page_hook = add_menu_page('菜单标题', '菜单名称', 'administrator', 'custompage', 'custom_menu_page', plugins_url('myplugin/images/icon.png'), 6);
}

接着在 admin_enqueue_scripts 钩子调用CSS或JS文件时加个判断:

add_action('admin_enqueue_scripts', 'yjw_scripts_styles');
function yjw_scripts_styles($hook){
	global $yjw_settings_page_hook;
	if( $yjw_settings_page_hook != $hook )
		return;

	wp_enqueue_style("yjw_options_panel_stylesheet", plugins_url("static/css/options-panel.css", dirname(__FILE__)), false, "1.0", "all");
	wp_enqueue_script("yjw_options_panel_script", plugins_url("static/js/options-panel.js", dirname(__FILE__)), false, "1.0");
	wp_enqueue_script('common');
	wp_enqueue_script('wp-lists');
	wp_enqueue_script('postbox');
}