Добавить разделитель к меню администратора?

Кто-либо знает, как добавить разделитель меню администратора? Я нашел это, но это не помогло.

Какие-либо идеи?

22
29.03.2015, 22:04
4 ответа

Вот быстрый и грязный способ получить то, что Вы хотите.

Фон

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, Вы могли бы найти эти ссылки полезными в целом для работы с меню администратора:

Хотя мои классы меню администратора в настоящее время не предлагают простой способ добавить разделители, я думаю, что теперь добавлю это, когда у меня будет время.

33
19.02.2020, 21:56
  • 1
    Спасибо Mike, я проверил всю ночь, изучив глобальное меню var, но я не сделал управляемый для добавления разделителя, мне теперь намного более ясно, как меню работают в wp. –  user1147 07.10.2010, 19:53
  • 2
    Привет @user1147: Да, их очень трудно выяснить. То, когда я сначала имел к нему, взяло меня довольно много времени, и я все еще борюсь с ними. Следовательно, почему я записал те функции, таким образом, я могу сделать это простой способ с этого времени! Так или иначе довольный моему ответу помогают. положительная сторона –  MikeSchinkel 07.10.2010, 20:39
  • 3
    @MikeSchinkel Этот метод не работает на меня с Wordpress 3.3.1. –  Jim Geurts 10.01.2012, 00:49
  • 4
    @JimGeurts - это не работает на меня ни один:/ –  Evan Mattson 24.04.2012, 20:56
  • 5
    я просто протестировал его и это действительно "работает" в 4,5, но WordPress, решенный для избавлений от строк, делает они просто не появляются больше. Я думаю решение, если добавить CSS, но ни за что в жизни я не могу выяснить то, что CSS добавить, так как я - бэкенд dev и сосу в CSS. Возможно, кто-то еще может предложить? –  MikeSchinkel 23.06.2016, 04:23

Имел некоторые проблемы с разделителями, не добавляемыми, это происходило из-за способа, которым Wordpress удаляет дублирующиеся разделители. Добавление ksort($menu); к нижней части функции исправил проблему.

2
19.02.2020, 21:56

Немного трудно определить то, что Вы пытаетесь сделать, но я думаю, что Вы надеетесь добавлять запись верхнего уровня в меню администратора WordPress.

См. эту документацию в Кодексе WordPress.

Короче говоря, Вы ищете использование add_menu_page() функция, которая берет много аргументов и отображает дополнительный объект в административном меню как одноуровневый элемент "Панели инструментов", "Сообщений", "Медиа", и т.д.

Надеюсь, что я разобрался в нем.:-)

0
19.02.2020, 21:56
  • 1
    я просто пытаюсь добавить меню администратора seprator. Прежде, чем отправить вопрос я пытался использовать add_menu_page(). –  user1147 06.10.2010, 23:56
  • 2
    Похож на MikeSchinkel, полученный Вы вполне прилично. Извините за недоразумение.Удачи! –  dgw 07.10.2010, 23:41

Это легко как:

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 самоанализ классов.

4
19.02.2020, 21:56

Теги

Похожие вопросы