Answers:
这是一种获取所需内容的快捷方法。
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
您需要的索引找出你需要,你可以做一个什么指数var_dump()
的$GLOBALS['menu']
由内admin_init
钩。这是一些代码,您可以functions.php
暂时将它们放入主题文件中,以查看值是什么。这仅在请求以以下内容开头的URL时才有效/wp-admin/
(但请确保与FTP关联,而不与内置主题编辑器关联,否则,您将失去对站点的访问权限,至少直到获得对主题functions.php
文件的FTP访问权限为止!):
add_action('admin_init','dump_admin_menu');
function dump_admin_menu() {
if (is_admin()) {
header('Content-Type:text/plain');
var_dump($GLOBALS['menu']);
exit;
}
}
顺便说一句,您可能会发现这些链接通常对于使用管理菜单很有用:
尽管我的管理菜单类目前尚不提供添加分隔符的简便方法,但我认为我现在有空时会添加分隔符。
很简单,因为:
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
类自省。
如果没有添加分隔符的一些问题,那是由于wordpress删除重复的分隔符的方式。添加ksort($menu);
到函数底部可更正此问题。
这建立在MastaBaba的答案上,但不会在您指定的位置替换任何内容-只会在之后添加分隔符。
还使用匿名函数,因此仅与PHP 5.3及更高版本兼容。
add_action( 'admin_menu', function () {
$position = 29;
global $menu;
$separator = [
0 => '',
1 => 'read',
2 => 'separator' . $position,
3 => '',
4 => 'wp-menu-separator'
];
if (isset($menu[$position])) {
$menu = array_splice($menu, $position, 0, $separator);
} else {
$menu[$position] = $separator;
}
});
确定您要执行的操作有些困难,但我认为您正在寻找在WordPress管理菜单中添加顶级条目的功能。
请参阅WordPress Codex中的此文档。
简而言之,您正在寻找该add_menu_page()
函数的用法,该函数需要多个参数,并在管理菜单中显示其他项作为“仪表板”,“帖子”,“媒体”等的同级。
希望我做对了。:-)
add_menu_page()
。
以下广告将呈现管理菜单时运行的Wordpress操作。管理菜单是一个数组,您要做的就是在您指定的位置添加一个定义分隔符的数组元素。
从这里:
add_action( 'admin_menu', 'set_admin_menu_separator' );
function set_admin_menu_separator() {
$position = 79;
global $menu;
$menu[$position] = array(
0 => '',
1 => 'read',
2 => 'separator' . $position,
3 => '',
4 => 'wp-menu-separator'
);
}
请注意,尽管这与当前接受的答案很像,但是当前接受的答案对我不起作用(从评论中可以看出,对于其他几个答案)。