管理菜单(&M)子菜单分隔符
在检查并扩展核心API以允许主菜单分隔符位于自定义位置后,我快速浏览了核心菜单文件,彻底清除了其中的所有内容,并找到了一个允许将核心API也用于自定义子菜单分隔符的解决方案。
结果是,在添加分隔符后,我们的菜单就是这样的。
要做到这一点,只需添加一个小插件,或将此代码片段放入插件文件或函数中。php。下面是一个插件示例。如您所见,您必须在希望分隔符出现的位置添加父页面。然后您必须添加标识符wp-menu-separator
. 您可以通过更改read
-此菜单中任何其他项目的功能。这个11
才是最重要的。将其调整到您希望分隔符显示在菜单中的任何位置。
<?php
defined( \'ABSPATH\' ) OR exit;
/** Plugin Name: Example Admin Menu Separator */
add_action( \'admin_menu\', \'add_admin_menu_separator\' );
function add_admin_menu_separator()
{
add_menu_page( \'\', \'\', \'read\', \'wp-menu-separator\', \'\', \'\', \'21\' );
add_submenu_page( \'edit.php?post_type=page\', \'wp-menu-separator\', \'\', \'read\', \'11\', \'\' );
}
插件本身同样,此插件可以用作插件、另一个插件的一部分或(最好)用作muplugin。
<?php
defined( \'ABSPATH\' ) OR exit;
/**
* Plugin Name: Admin Menu Separator
* Description: Adds a separator on whatver priority is needed.
*/
add_filter( \'parent_file\', \'admin_menu_separator\' );
function admin_menu_separator( $parent_file )
{
$menu = &$GLOBALS[\'menu\'];
$submenu = &$GLOBALS[\'submenu\'];
foreach( $submenu as $key => $item )
{
foreach ( $item as $index => $data )
{
// Check if we got the identifier
if ( in_array( \'wp-menu-separator\', $data, true ) )
{
// Set the MarkUp, so it gets used instead of the menu title
$data[0] = \'<div class="separator"></div>\';
// Grab our index and temporarily save it, so we can safely overrid it
$new_index = $data[2];
// Set the parent file as new index, so core attaches the "current" class
$data[2] = $GLOBALS[\'parent_file\'];
// Reattach to the global with the new index
$submenu[ $key ][ $new_index ] = $data;
// Prevent duplicate
unset( $submenu[ $key ][ $index ] );
// Get back into the right order
ksort( $submenu[ $key ] );
}
}
}
foreach( $menu as $key => $item )
{
if (
in_array( \'wp-menu-separator\', $item )
AND 5 < count( $item )
)
{
$menu[ $key ][2] = \'separator0\';
$menu[ $key ][4] = \'wp-menu-separator\';
unset(
$menu[ $key ][5]
,$menu[ $key ][6]
);
}
}
return $parent_file;
}