У меня есть пользовательский тип поста, Jobs, с 3 таксономиями в меню Admin.
Одной из таксономий является Статус, который является Активным или Закрытым. Я хочу пункт меню под Рабочие места для активных рабочих мест. Я создал это с этим кодом
add_submenu_page(
'edit.php?post_type=jobs',
'Active Jobs',
'Active Jobs',
'manage_options',
'edit.php?post_type=jobs&jobstatus=67'
);
Это работает отлично, за исключением того, что пункт меню «Задания» остается выделенным, когда активен параметр меню «Активные задания». Смотрите скриншот
Я читал в этой статье Текущий класс в меню администратора, используя add_submenu_page (), чтобы не включать родительский слаг в качестве первого параметра. Я не знаю, как заставить подменю появляться в правильном разделе навигации, когда я удаляю слаг имени файла.
На данный момент я не использую функцию обратного вызова, я просто выполняю тот же URL, что и опция подменю Jobs по умолчанию, за исключением параметров запроса, которые фильтруют отображаемые сообщения. Если перемещение в функцию обратного вызова решит проблему, я могу это сделать. Но я не знаю, что должно идти в функцию обратного вызова. Я хочу отобразить стандартную страницу редактирования пользовательских типов сообщений, просто с установленным фильтром таксономии. Спасибо за содействие
источник
'edit.php?&post_type=jobs&jobstatus=67'
... что сначала&
не должно быть там, после?
...Ответы:
Я сделал эту работу, используя меню сообщений и статус черновика. Он использует jQuery для изменения классов элементов списка. Адаптируйтесь для работы с вашим типом поста и URL.
Это результат:
источник
Вот решение, которое я только что придумал, которое не использует jQuery:
Существует фильтр ,
parent_file
вwp-admin/menu-header.php
котором проходит прямо перед выводом меню. Встроенный комментарий гласит:Это всего лишь фильтр для глобальной переменной,
$parent_file
и я не уверен, что он делает, но$submenu_file
вместо этого мы будем использовать этот фильтр для изменения глобальной переменной , которая устанавливает подсвеченное подменю. Так что это будет решением в вашем случае:Вы можете адаптировать это к любому форматированию URL. Например, я использую формат
admin.php?page=my_plugin_slug&action=myaction
для подменю моих плагинов, поэтому я использовал это, чтобы выделить мои подменю:PS: Я также попробовал действие ,
admin_menu
чтобы установить$submenu_file
, и он сделал работу в моем случае (пользовательский плагин страницы / слизняк) , но не дляedit.php
меню подразделам (ваш случай). Поэтому я искал другое действие / фильтр, который запускается позже, и это был фильтрparent_file
.источник
я узнал, что вам также нужно использовать HTML-сущности для вашей ссылки. так как у вас есть
Вы можете попробовать изменить амперсанд на его HTML-эквивалент
так что вы бы
это сработало для меня ... я также проверил выходную строку для подменю и родительского меню и проверил, совпадают ли они. это может быть маленькая служебная функция для проверки этого материала
источник