但是parent_base 设置为null。
是的,因为那时admin_body_class 被解雇,WordPress尚未设置parent_base 价值
只有在<body> 标记实际已输出。更具体地说,它只在<div id="wpbody" role="main"> 如你所见here in wp-admin/admin-header.php.
如果类位于特定的顶级菜单下,您知道如何将其添加到子菜单页吗。
您可以使用admin_body_class 钩子,但不是$screen->parent_base, 使用$screen->id 返回的钩子名称add_menu_page() 以及add_submenu_page().
要获得钩子名称,您应该或者想要使用get_plugin_page_hook().
例如:
如果我像这样添加顶级菜单和子菜单:
// Top-level menu: "Test menu"
add_menu_page( \'Test\', \'Test menu\', \'manage_options\', \'test\', \'some_function\' );
// Submenu: "Test submenu"
add_submenu_page( \'test\', \'Submenu Page\', \'Test submenu\', \'manage_options\',
\'test-submenu\', \'some_function_2\' );
然后我可以添加自定义CSS类,如下所示:
add_filter( \'admin_body_class\', \'my_admin_body_class\' );
function my_admin_body_class( $classes ) {
$screen = get_current_screen();
if ( get_plugin_page_hook( \'test\', \'\' ) === $screen->id ) {
$classes .= \' foo-class\';
}
elseif ( get_plugin_page_hook( \'test-submenu\', \'test\' ) === $screen->id ) {
$classes .= \' bar-class\';
}
return $classes; // *always return this
}
注意,我强调了
return $classes; 因为在你的
tw_admin_body_class() 功能
$classes 仅当条件返回true时才返回。
实际上,插件页面挂钩默认添加到<body> 菜单/管理页面以及顶级菜单项的标记(<li> 标签),例如。<body class="... toplevel_page_test ..."> 在“我的”;“测试”;管理页面,所以您可以直接使用该类?