изменить порядок меню плагинов

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

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

  • Предыстория
    Плагины AIO webmaster и All In One Events оба устанавливают позицию меню на 6. Поэтому, если вы загружаете оба плагина, плагин Events “теряет” позицию и исчезает.

Я хотел бы функцию, чтобы просто переместить AIO webmaster, скажем, с позиции 6 на другое место — лучше всего было бы вообще убрать позицию и позволить ему попасть в порядок меню по умолчанию!

Тем временем я вношу изменения в код AIO webmaster из:

public function aiow_premium_menupage() {
    add_menu_page ( 'All in One Webmaster', 'AIO Webmaster', 'manage_options', 'aiow-premium', 'all_in_one_premium_webmaster_webmaster_page', plugins_url ( 'all-in-one-webmaster/images/favicon.ico' ), 6);

и убираю 6-ю позицию

public function aiow_premium_menupage() {
    add_menu_page ( 'All in One Webmaster', 'AIO Webmaster', 'manage_options', 'aiow-premium', 'all_in_one_premium_webmaster_webmaster_page', plugins_url ( 'all-in-one-webmaster/images/favicon.ico' ), 6);

..очевидно, это продлится только до обновления плагина.

Есть ли идеи по переопределяющим функциям, чтобы это изменение сохранилось?

Проверьте, работает ли это решение (предложенное @Syrehn): Изменить порядок элементов плагина в меню администратора

Попробуйте взять только имя из ссылки страницы администратора и посмотрите, работает ли это. Что-то вроде этого:

function custom_menu_order($menu_ord) {
if (!$menu_ord) return true;

return array(
    'index.php', // Панель управления
    'separator1', // Первый разделитель
    'edit.php', // Записи

    'pluginname2', // Возьмите имя со страницы меню admin.php?page=pluginname2

    'upload.php', // Медиа
    'edit.php?post_type=page', // Страницы
    'edit-comments.php', // Комментарии

    'pluginname', // Возьмите имя со страницы меню admin.php?page=pluginname

);
}
add_filter('custom_menu_order', 'custom_menu_order'); // Активировать custom_menu_order
add_filter('menu_order', 'custom_menu_order');

Я бы сделал это комментарием, но я пока не могу этого сделать.

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

Как изменить порядок меню плагина в WordPress

Когда несколько плагинов назначают одно и то же положение в меню админки WordPress, это может привести к конфликтам, таким как исчезновение одного из элементов меню. В вашем случае оба плагина — AIO Webmaster и All In One Events — используют позицию 6, и это затрудняет доступ к функционалу одного из них.

Проблема и её решение

Необходимо разработать функцию, которая позволит перенести позицию плагина AIO Webmaster на другое место, а в идеале — убрать её совсем, чтобы плагин занял стандартное положение в меню. Это позволит избежатьEditing конфликтов при обновлении плагинов.

  1. Функция кастомизации порядка меню

Для изменения порядка меню в админке WordPress нам нужно использовать фильтры custom_menu_order и menu_order. В следующем коде представлена функция, которая позволяет изменить порядок отображения меню:

function custom_menu_order($menu_ord) {
    if (!$menu_ord) return true;

    return array(
        'index.php', // Панель управления
        'separator1', // Первый разделитель
        'edit.php', // Записи

        // Добавляем название вашего плагина, полученное из меню
        'aiow-premium', // AIO Webmaster

        'upload.php', // Медиафайлы
        'edit.php?post_type=page', // Страницы
        'edit-comments.php', // Комментарии

        // Здесь можно добавить другие плагины
    );
}
add_filter('custom_menu_order', 'custom_menu_order'); // Активируем кастомизацию порядка меню
add_filter('menu_order', 'custom_menu_order');

В этом коде вы можете переупорядочить меню по своему усмотрению, изменяя массив в функции custom_menu_order.

  1. Проверка работы

После добавления этого кода в файл функций вашей темы (обычно это functions.php), обратите внимание на порядок элементов меню. Если всё выполнено правильно, меню AIO Webmaster должно появиться в заданном вами месте.

Поддержка изменений при обновлении

Один из основных вопросов, который вы подняли, — как сохранить изменения после обновления плагина. Обновление плагинов в WordPress бывает частым, что может перезаписать ваши изменения. Этот код, помещённый в файл functions.php темы, остаётся вне плагинов, поэтому он должен работать даже после его обновления.

Заключение

Теперь у вас есть способ управления порядком отображения меню для плагина AIO Webmaster, который также будет устойчив к будущим обновлениям. Это упрощает работу с админкой и минимизирует конфликты между плагинами. Убедитесь, что любой новый порядок может быть легко адаптирован к вашим потребностям, просто изменяя массив в функции custom_menu_order.

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

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