Вопрос или проблема
Ищу функцию, которую я мог бы использовать для изменения позиции администратора стороннего плагина, которая будет работать и после обновления этого плагина.
- Предыстория
Плагины 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 конфликтов при обновлении плагинов.
- Функция кастомизации порядка меню
Для изменения порядка меню в админке 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
.
- Проверка работы
После добавления этого кода в файл функций вашей темы (обычно это functions.php
), обратите внимание на порядок элементов меню. Если всё выполнено правильно, меню AIO Webmaster должно появиться в заданном вами месте.
Поддержка изменений при обновлении
Один из основных вопросов, который вы подняли, — как сохранить изменения после обновления плагина. Обновление плагинов в WordPress бывает частым, что может перезаписать ваши изменения. Этот код, помещённый в файл functions.php
темы, остаётся вне плагинов, поэтому он должен работать даже после его обновления.
Заключение
Теперь у вас есть способ управления порядком отображения меню для плагина AIO Webmaster, который также будет устойчив к будущим обновлениям. Это упрощает работу с админкой и минимизирует конфликты между плагинами. Убедитесь, что любой новый порядок может быть легко адаптирован к вашим потребностям, просто изменяя массив в функции custom_menu_order
.