Intereting Posts
Использование анонимных функций Где я могу получить «Информация об ошибке», чтобы добавить к вопросу? Рекомендуемое изображение всегда отображается с 198px высоты? получить короткий код элементов контента (страницы, сообщения и т. д.) Заголовок HTML-заголовка разбит в моей дочерней теме admin-ajax.php медленно, как ускорить его? Как использовать несколько запросов с тем же мета-ключом Заблокировано из администратора сайта WordPress после включения принудительного SSL на WordPress Https (SSL) Добавить число символов в пользовательский обмен Как я могу понять полу-частный дневник дневника исследования? Пустые настройки постоянных ссылок в .htaccess Переменная равна другой переменной, а затем равна другой переменной Определение крючков внутри классов (php)? Могу ли я создавать простые всплывающие подсказки в WordPress? Как изменить порядок скриптов?

Изменение позиции носителя в меню администратора

Можно ли установить позицию элемента в меню администратора? Я пытаюсь переместить медиа-ссылку под свои пользовательские типы сообщений. Я знаю, что медиа-ссылка – это позиция 10. Можно ли установить ее на 14?

Я знаю, что я могу изменить положение всех ссылок, используя фильтр custom_menu_order но я не вижу способа установить позицию в этом фильтре.

Это не точный ответ, но я думаю, что для создания желаемого результата достаточно элементов.

Я сортирую меню, управляя глобальным $menu , а не действительно лучшей практикой, но на данный момент это работает.

Результатом этого примера является перемещение диспетчера ссылок, комментариев и медиабиблиотеки в конец первого блока. Эффект: сначала все типы сообщений, затем эти элементы.

Нам нужна функция поиска рекурсивного массива, чтобы найти ключ для каждого элемента, [5] , [10] , [15] и т. Д. Таким образом, мы можем быть уверены в том, что нацеливаем нужный элемент и вам не нужно проверять меню для подтверждения каждого из них.

Прежде всего, нужно захватить позицию второго разделителя ( separator2 ), поскольку мы собираемся переместить все непосредственно перед ним. Затем мы ищем каждый элемент, который хотим переместить, сделаем его копию и отменим из $menu . Наконец, мы вычитаем количество «подвижных» предметов из позиции разделителя (скажем, 100) и добавим наши позиции в позиции 97, 98, 99 (в этом примере мы перемещаем 3 элемента).

 add_action( 'admin_menu', 'sort_cpts_wpse_99459', 9999 ); function sort_cpts_wpse_99459() { global $menu; $mod_menu = array(); $separator = b5f_recursive_array_search( 'separator2', $menu ); $links = b5f_recursive_array_search( 'link-manager.php', $menu ); $upload = b5f_recursive_array_search( 'upload.php', $menu ); $comments = b5f_recursive_array_search( 'edit-comments.php', $menu ); if( $links ) { $mod_menu['links'] = $menu[ $links ]; unset( $menu[ $links ] ); } if( $upload ) { $mod_menu['upload'] = $menu[ $upload ]; unset( $menu[ $upload ] ); } if( $comments ) { $mod_menu['comments'] = $menu[ $comments ]; unset( $menu[ $comments ] ); } $position_menu = (int)$separator - count( $mod_menu ); foreach( $mod_menu as $m ) { $menu[ $position_menu ] = $m; $position_menu++; } } function recursive_array_search( $needle, $haystack ) { foreach( $haystack as $key => $value ) { $current_key = $key; if( $needle === $value OR ( is_array( $value ) && b5f_recursive_array_search( $needle, $value ) !== false ) ) { return $current_key; } } return false; } 

Я знаю, это старый, но следующее решение на самом деле довольно приятное, я думаю:

 add_filter('custom_menu_order', 'antwortzeit_custom_menu_order'); add_filter('menu_order', 'antwortzeit_custom_menu_order'); function antwortzeit_custom_menu_order($menu_order) { if (!$menu_order) return true; $menu_order_string = implode(', ', $menu_order); $menu_order_string = str_replace(', upload.php', '', $menu_order_string); $menu_order_string = str_replace('index.php', 'index.php, upload.php', $menu_order_string); return explode(', ', $menu_order_string); } 

Сделайте var_dump в $ menu_order_string перед заменой, чтобы увидеть позиции и выберите свою позицию для str_replace. В этом случае мы переставляем медиабиблиотеку прямо за панелью инструментов.

Надеюсь, это поможет кому-то в будущем.