我正在使用此代码将脚本和样式排队到wordpress插件。这很好,但我想知道在my\\u admin\\u enqueue\\u scripts函数中是否有一些参数可用?因为我想在每页上查询不同的脚本。我知道我可以调用不同的函数,如my\\u admin\\u enqueue\\u scripts、my\\u admin\\u enqueue\\u scripts 2、my\\u admin\\u enqueue\\u scripts 3,但我仍然需要重复许多脚本才能排队,所以我想知道我是否可以检测到my\\u admin\\u enqueue\\u scripts函数中的页面。
add_action("admin_menu", "my_admin_menu");
function my_admin_menu(){
$menu = add_menu_page(\'Audio Player\', \'Audio Player\', MY_CAPABILITY, \'my_settings\', \'my_settings_page\', \'dashicons-playlist-audio\');
$submenu = add_submenu_page(\'my_settings\', __(\'Audio Player\', MY_TEXTDOMAIN), __(\'Settings\', MY_TEXTDOMAIN), MY_CAPABILITY, \'my_settings\', \'my_settings_page\');
$submenu2 = add_submenu_page(\'my_settings\', __(\'Audio Player\', MY_TEXTDOMAIN), __(\'Player manager\', MY_TEXTDOMAIN), MY_CAPABILITY, \'my_player_manager\', \'my_player_manager_page\');
add_action( \'load-\' . $menu, \'my_admin_enqueue_scripts\' );
add_action( \'load-\' . $submenu, \'my_admin_enqueue_scripts\' );
add_action( \'load-\' . $submenu2, \'my_admin_enqueue_scripts\' );
}
function my_admin_enqueue_scripts($param) {
//is there a $param here?
wp_enqueue_script(\'jquery\');
wp_enqueue_script(\'jquery-ui-sortable\');
wp_enqueue_media();
wp_enqueue_style("spectrum", plugins_url(\'/css/spectrum.css\', __FILE__));
wp_enqueue_script("spectrum", plugins_url(\'/js/spectrum.js\', __FILE__), array(\'jquery\'));
.... other scripts
}
最合适的回答,由SO网友:Sally CJ 整理而成
//is there a $param here?
无
hook 您使用的不会向回调传递任何参数。
但您可以使用admin_enqueue_scripts
hook 它传递当前菜单页的挂钩名称—钩子名称也保存在全局文件中$hook_suffix
变量然后您可以使用get_plugin_page_hookname()
获取特定菜单页的挂钩名称,然后有条件地将菜单页的脚本排队。
function my_admin_enqueue_scripts( $hook_suffix ) {
switch ( $hook_suffix ) {
// Enqueue scripts for the "Audio Player -> Settings" page.
case get_plugin_page_hookname( \'my_settings\', \'\' ) :
//wp_enqueue_script( ... );
break;
// Enqueue scripts for the "Audio Player -> Player manager" page.
case get_plugin_page_hookname( \'my_player_manager\', \'my_settings\' ) :
//wp_enqueue_script( ... );
break;
}
}
add_action( \'admin_enqueue_scripts\', \'my_admin_enqueue_scripts\' );
实际上,你应该使用
admin_enqueue_scripts
用于将管理脚本排入队列的挂钩。:)
此外,在您的第一次add_submenu_page()
调用时,只需省略第六个参数(即回调),而将其设置为my_settings_page
, 防止函数在同一页上被调用两次。