但是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 ...">
在“我的”;“测试”;管理页面,所以您可以直接使用该类?