Что касается примечания, связанного с « Изменением порядка разделов меню администратора? », Я ищу способ отсортировать записи в алфавитном порядке в каждом подразделе области администрирования WordPress.
В настоящее время всякий раз, когда добавляется новый плагин, его запись будет отображаться в, казалось бы, случайном месте в разделе «Настройки» / «Инструменты» / «Плагины», и часто бывает трудно найти новый пункт меню. (У меня уже есть много плагинов, поэтому мои меню довольно полны.)
Поскольку я довольно регулярно добавляю и удаляю плагины, мне бы не хотелось постоянно заходить на страницу настроек для плагина упорядочения меню и настраивать порядок.
Извините за длинный вопрос; Я просто хочу прояснить, что я ищу.
Пример
Вместо:
Настройки - Общий - Пишу - Чтение - Обсуждение - (остальные основные предметы) - Плагин 4 - ВП что-то - Плагин, чтобы помочь с вещами - Плагин, связанный с Google - RSS-плагин - Плагин FeedBurner - так далее.
Могу ли я отсортировать меню по алфавиту (или другим логическим способом), например:
Настройки - Плагин, чтобы помочь с вещами - Обсуждение - Плагин FeedBurner - Общий - Плагин, связанный с Google - Плагин 4 - Чтение - (остальные основные предметы) - RSS-плагин - ВП что-то - Пишу - так далее.
Еще лучше был бы метод сортировки, который сохраняет основные записи там, где они находятся по умолчанию, и сортирует только элементы, добавленные плагинами:
Настройки - Общий - Пишу - Чтение - Обсуждение - (остальные основные предметы) - Плагин, чтобы помочь с вещами - Плагин FeedBurner - Плагин, связанный с Google - Плагин 4 - RSS-плагин - ВП что-то - так далее.
Это можно сделать, отсортировав глобальные файлы
$submenu
.Применяемая сортировка сбрасывает номер ключа подмассива
$submenu['options-general.php']
, который равен:и становится:
Здесь мы рассматриваем длину элементов по умолчанию, равную шести. До WordPress 3.5 было 7 элементов, Конфиденциальность теперь отсутствует и встроена во вкладку « Чтение ».
При локальном тестировании это не дает никаких неожиданных результатов и работает нормально. Возможно, если бы плагин зависел от своего
$submenu['options-general.php'][15]
позиционирования или чего-то еще, могли бы возникнуть ошибки.Сортировка применяется отдельно для элементов по умолчанию и для остальных. Просто отключите
usort
первый блок, и вы получите желаемый результат.Звучит как отличный код, но я не вижу, где он автоматически сортирует вложенные записи.
Красиво и компактно. Что
$submenu_key
представляет? Это то, что WordPress называет$parent slug
в документах add_submenu_page ?@cale_b Отличный вопрос! Вы правы, это
$parent_slug
в документах add_submenu_page, то же самое, что и$menu_slug
в add_menu_page.Я искал то же самое и решил, что скопирую код, предоставленный Майком ниже, который, как он утверждает, все еще находится в альфа-версии, поскольку только он использовал его.
Я протестировал его, и, похоже, он хорошо работает для меня. Я уверен, что есть варианты использования, которые они еще не обрабатывают.
Возможно, Майк прокомментирует здесь и предоставит дополнительную помощь о том, как вы можете использовать его класс для достижения своих целей.
Вы можете загрузить файл, чтобы поместить его в каталог вашей темы здесь: https://gist.github.com/792b7aa5b695d1092520
Ниже показано, как вы можете вызывать функции в файле functions.php вашей темы:
Более того, эти функции даже рассматриваются (в качестве основы) для включения в WordPress 3.1, поэтому, если нам повезет, они могут даже стать стандартными!
Думал, что это может быть полезно как еще один вариант. Вот простой пример использования глобального подменю $. Я использую хук admin_init, потому что в admin_menu все еще могут быть другие плагины, добавляющие элементы подменю (в моем случае это было так, так что было слишком рано для сортировки). Также обратите внимание, что анонимная (лямбда) функция в usort требует PHP 5.3+.
Обратите внимание, что
$submenu_key
это$parent_slug
в add_submenu_page, то же самое, что и$menu_slug
в add_menu_page.