问题描述
有谁知道如何添加管理菜单分隔符?我发现 this,但没有帮助。
有任何想法吗?
最佳解决方案
这是一个快速而肮脏的方式来获得你想要的。
Background
WordPress 将管理菜单部分存储在名为 $menu
的全局数组中。要添加分隔符,请使用要分离的选项的索引之间的索引向 $menu
数组添加元素。
使用 add_admin_menu_separator()
功能
所以我写了一个函数来封装这个我称为 add_admin_menu_separator()
的逻辑。您需要选择一个数组索引号,该数字高于要添加分隔符的选项,然后调用函数 add_admin_menu_separator()
传递所述索引作为参数。
例如:
add_admin_menu_separator(37);
add_admin_menu_separator()
功能本身
以下是 add_admin_menu_separator()
功能的定义,您可以将其复制到主题的 functions.php
文件中。是的,这是奥秘,那么创建和使用全局 $menu
数组的代码也是如此。 (计划最终会弃用它,幸运的是,可能会是几年。)
function add_admin_menu_separator($position) {
global $menu;
$index = 0;
foreach($menu as $offset => $section) {
if (substr($section[2],0,9)=='separator')
$index++;
if ($offset>=$position) {
$menu[$position] = array('','read',"separator{$index}",'','wp-menu-separator');
break;
}
}
ksort( $menu );
}
找到您需要的 $menu
的索引
要找出您需要的索引号,您可以从 admin_init
钩子中执行 $GLOBALS['menu']
的 var_dump()
。这里有一些代码可以暂时放入主题的 functions.php
文件中,以查看这些值。这仅在请求以/wp-admin/
开头的 URL(但是请确保使用 FTP 而不是内置的主题编辑器) 或您将无法访问您的网站时起作用,至少在您访问主题的 functions.php
文件之前! ):
add_action('admin_init','dump_admin_menu');
function dump_admin_menu() {
if (is_admin()) {
header('Content-Type:text/plain');
var_dump($GLOBALS['menu']);
exit;
}
}
也可以看看:
BTW,您可能会发现这些链接一般适用于使用管理菜单:
-
更改管理菜单部分的顺序
-
最新:
wp-admin-menu-classes.php
虽然我的管理菜单课程目前不提供一个简单的方法来添加分隔符,我想我现在补充说,当我有时间。
次佳解决方案
很简单:
add_action( 'admin_init', 'add_sep' );
function add_sep() {
if ( ! is_admin() )
return false;
global $menu;
$sep = $menu[4]; // that's the default separator
$pos = 6; // change it for the desired position
$menu = array_merge(
array_slice( $menu, 0, $pos ),
array( $sep ),
array_slice( $menu, $pos + 1, -1)
);
$menu[ $pos - 1 ][4] .= ' menu-top-last';
$menu[ $pos + 1 ][4] .= ' menu-top-first';
}
注意:默认分隔符位置 ($menu[4]
) 可能会根据您 (或插件) 在此钩子之前所做的配置而有所不同。
当然,你也可以调整 menu-top-first
和 menu-top-last
类的内省。
参考文献
注:本文内容整合自 google/baidu/bing 翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:gxnotes#qq.com(#替换为 @) 。