Возможно ли контролировать порядок всех элементов меню администрирования?

Вопрос или проблема

Есть задача настроить элементы меню в административной панели в зависимости от установленных правил.

введите описание изображения здесь

  1. Страницы
  2. Истории
  3. Ресурсы
  4. Упоминания в прессе
  5. Члены команды
  6. Медиа
  7. Меню

–Пробел–

  1. Настройки темы
  2. Формы
  3. Внешний вид
  4. Плагины
  5. Пользователи
  6. Инструменты
  7. Настройки
  8. Менеджер файлов
  9. ACF

–Пробел–

  1. Yoast SEO
  2. Smush Pro

Я видел рекомендацию по этому поводу.

add_action('admin_menu', 'set_pages_menu_position');
function set_pages_menu_position() {
    global $menu;
    $desired_position = 7; // для элемента Страницы

    foreach ($menu as $key => $item) {
        if ($item[2] === 'edit.php?post_type=page') {
            $pages_menu = $menu[$key];
            unset($menu[$key]);
            break;
        }
    }
    $menu = array_slice($menu, 0, $desired_position, true) +
            [$desired_position => $pages_menu] +
            array_slice($menu, $desired_position, null, true);
}

Но кажется глупым делать это для каждого элемента, кроме того, если какой-то новый плагин имеет такой же номер в порядке, это вызовет конфликт и один из элементов не будет показан.

Ответ или решение

Да, возможно управлять порядком всех пунктов меню администратора в WordPress. Однако это требует учета нескольких аспектов, чтобы избежать конфликтов и сложностей в будущем. Давайте проанализируем, как можно достичь желаемого порядка в меню администрирования и минимизировать потенциальные проблемы.

1. Использование хука admin_menu

WordPress предоставляет хук admin_menu, который позволяет изменять меню администратора. Вы можете перемещать элементы меню, устанавливать их позиции или полностью скрывать их. Для этого необходимо написать кастомизацию в файле темы или в плагине.

2. Пример реализации

Из приведенного вами примера видно, что вы хотите переместить элемент меню "Pages". Однако, как вы и заметили, ручное перемещение каждого элемента может быть неэффективным. Один из подходов на основе вашего кода может выглядеть следующим образом:

add_action('admin_menu', 'set_admin_menu_order');

function set_admin_menu_order() {
    global $menu;

    // Определите порядок пунктов меню
    $menu_order = [
        'edit.php?post_type=page',    // Pages
        'edit.php?post_type=stories',  // Stories
        'edit.php?post_type=resources', // Resources
        'edit.php?post_type=press',    // Press Mentions
        // И так далее...
    ];

    foreach ($menu_order as $desired_position => $menu_slug) {
        foreach ($menu as $key => $item) {
            if ($item[2] === $menu_slug) {
                $current_item = $menu[$key];
                unset($menu[$key]);
                $menu = array_slice($menu, 0, $desired_position, true) +
                        [$desired_position => $current_item] +
                        array_slice($menu, $desired_position, null, true);
                break;
            }
        }
    }
}

3. Предотвращение конфликтов

Как вы уже отметили, возникает риск, что если плагин добавит элемент с таким же порядковым номером, один из пунктов меню может не отображаться. Чтобы избежать этого, можно:

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

4. Использование плагинов

Существуют плагины, такие как Admin Menu Editor, которые предоставляют удобный интерфейс для изменения порядка пунктов меню, но они могут добавлять нагрузку на производительность. Этот вариант может быть предпочтительным, если вы ищете более простой и визуальный способ управления меню.

5. Заключение

Управление порядком пунктов меню администратора в WordPress возможно, и существует множество методов для этого, каждый из которых имеет свои плюсы и минусы. Персонализированное решение, основанное на вашем проекте и необходимостях, будет наиболее подходящим. Правильная организация и порядок позволяют улучшить навигацию и удобство использования вашей админ-панели.

С точки зрения SEO, важно обеспечить всестороннюю поддержку вашего администрирования и чистоту кода — это не только улучшит функциональность, но и повысит масштабируемость системы в будущем.

Оцените материал
Добавить комментарий

Капча загружается...