我正在尝试将插件的脚本和css文件添加到管理标头中。
那么像任何优秀的开发人员一样,您应该使用wp_enqueue_script
或wp_enqueue_style
因此,您无需将这些脚本/样式包含硬编码到插件中(这意味着用户可以在需要时将其解开)。
http://codex.wordpress.org/Function_Reference/wp_enqueue_script
http://codex.wordpress.org/Function_Reference/wp_enqueue_style
如果样式/脚本只加载到插件页面中,那么理想情况下,您应该在通用管理头挂钩内使用一些条件逻辑,或者将一些队列专门挂钩到页面。
首先为您的一个或多个页面设置钩子,这是调用中使用的第四个参数add_menu_page
第五个在add_submenu_page
, 我们来举个例子(直接从this codex page) 想象一下这些代表了你的插件页面。
add_menu_page(\'Page title\', \'Top-level menu title\', \'manage_options\', \'my-top-level-handle\', \'my_magic_function\');
add_submenu_page( \'my-top-level-handle\', \'Page title\', \'Sub-menu title\', \'manage_options\', \'my-submenu-handle\', \'my_magic_function\');
在这种情况下,两个挂钩(或把手)是
my-top-level-handle
和
my-submenu-handle
分别地
现在,为了将脚本或样式专门挂接到插件页面的管理头部,我们可以采用几种不同的方法,但我将介绍两种最明显(也是我最喜欢的)方法。
方法1使用admin_print_scripts-$hook
和admin_print_styles-$hook
特定于您的插件,并将每个插件页面的CSS/JS排队。
$hook表示给定管理页的挂钩(或句柄),每个管理页都有一个挂钩。
脚本将父菜单和子菜单页面的JS文件排队
add_action( \'admin_print_scripts-my-top-level-handle\', \'enqueue_my_js\' );
add_action( \'admin_print_scripts-my-submenu-handle\', \'enqueue_my_js\' );
function enqueue_my_js() {
wp_enqueue_script( .. YOUR ENQUEUE ARGS HERE .. );
}
将父菜单页和子菜单页的样式表文件排队
add_action( \'admin_print_styles-my-top-level-handle\', \'enqueue_my_style\' );
add_action( \'admin_print_styles-my-submenu-handle\', \'enqueue_my_style\' );
function enqueue_my_style() {
wp_enqueue_style( .. YOUR ENQUEUE ARGS HERE .. );
}
方法#2
通过钩住更通用的管理头钩子,将脚本和样式在所有插件管理页面中排队。
管理打印脚本+管理打印样式
通过这种方法,我们将使用对每个管理页面运行的更通用的钩子,但通过一点条件逻辑,我们可以确定我们正在查看的页面类型,如果它不是插件的页面之一,我们可以返回它(因此它本质上具有与第一种方法相同的效果)。
脚本将JS排入任何插件页面的队列
add_action( \'admin_print_scripts\', \'enqueue_my_js\' );
function enqueue_my_js() {
global $parent_file;
if( \'my-top-level-handle\' != $parent_file )
return;
wp_enqueue_script( .. YOUR ENQUEUE ARGS HERE .. );
}
任何插件页面的CSS排队
add_action( \'admin_print_styles\', \'enqueue_my_style\' );
function enqueue_my_style() {
global $parent_file;
if( \'my-top-level-handle\' != $parent_file )
return;
wp_enqueue_style( .. YOUR ENQUEUE ARGS HERE .. );
}
$parent_file
将只匹配插件的页面,因此
return;
当它不匹配时,即停止在函数内执行代码,以便排队仅在
$parent_file
匹配句柄。
如果您打算将脚本或样式排入多个页面的队列,可以通过注册脚本来简化此过程。
http://codex.wordpress.org/Function_Reference/wp_register_script
http://codex.wordpress.org/Function_Reference/wp_register_style
注册脚本或样式的优点是,调用该文件就变成了一个简单的。。
wp_enqueue_script( \'my_script_handle\' );
。。同样适用于等效样式。
这避免了为每个排队呼叫提供路径、依赖性等任何需要。
由于时间关系,我不得不在最后总结出答案,但希望我已经提供了足够有价值的信息。如果你在试图理解某些东西时遇到了困难,只需发表评论即可……)