Відповіді:
Ось швидкий і брудний спосіб отримати те, що ви хочете.
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, а не з вбудованим редактором тем, або ви втратите доступ до свого сайту, принаймні, поки ви не отримаєте 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, ви можете знайти ці посилання взагалі корисними для роботи з меню адміністратора:
Незважаючи на те, що мої заняття в адміністративному меню зараз не пропонують простий спосіб додавання роздільників, я думаю, зараз додаю це, коли матиму час.
Це легко:
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.
Коротше кажучи, ви шукаєте використання 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'
);
}
Зауважте, що, хоч це скоріше нагадує прийняту відповідь, наразі прийнята відповідь для мене не працює (і, судячи з коментарів, для кількох інших).