Вот быстрый и грязный способ получить то, что Вы хотите.
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
то, что Вам нужноВыяснять, какой индекс Вам нужны Вы, может сделать a var_dump()
из $GLOBALS['menu']
из admin_init
рычаг. Вот немного кода, можно заскочить тему functions.php
зарегистрируйте временно для наблюдения, каковы значения. Это будет только работать при запросе URL, запускающегося с /wp-admin/
(но обязательно сделайте с с FTP а не созданным в редакторе темы, или Вы освободите доступ к своему сайту, по крайней мере, пока Вы не получите доступ 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, Вы могли бы найти эти ссылки полезными в целом для работы с меню администратора:
Хотя мои классы меню администратора в настоящее время не предлагают простой способ добавить разделители, я думаю, что теперь добавлю это, когда у меня будет время.
Имел некоторые проблемы с разделителями, не добавляемыми, это происходило из-за способа, которым Wordpress удаляет дублирующиеся разделители. Добавление ksort($menu);
к нижней части функции исправил проблему.
Немного трудно определить то, что Вы пытаетесь сделать, но я думаю, что Вы надеетесь добавлять запись верхнего уровня в меню администратора WordPress.
См. эту документацию в Кодексе WordPress.
Короче говоря, Вы ищете использование add_menu_page()
функция, которая берет много аргументов и отображает дополнительный объект в административном меню как одноуровневый элемент "Панели инструментов", "Сообщений", "Медиа", и т.д.
Надеюсь, что я разобрался в нем.:-)
add_menu_page()
.
– user1147
06.10.2010, 23:56
Это легко как:
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
самоанализ классов.