Как изменить положение меню администратора "Медиа"?


Я хотел бы изменить приоритет/порядок меню на странице администратора "Медиа". Есть ли способ изменить это с помощью apply_filter?

Есть ли способ изменить приоритет только "Медиа" страницы без необходимости перечислять все страницы в menu_order?

Спасибо

Author: Andy Macaulay-Brook, 2016-07-25

3 answers

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

function wpse_233129_custom_menu_order() {
    return array( 'index.php', 'upload.php' );
}

add_filter( 'custom_menu_order', '__return_true' );
add_filter( 'menu_order', 'wpse_233129_custom_menu_order' );

Это поставит upload.php (экран Мультимедиа) сразу после панели мониторинга, а затем последуют другие пункты меню верхнего уровня.

Если вы хотите разместить носитель в другом месте, просто перечислите все остальные экраны, которые должны предшествовать ему в массиве.

В качестве альтернативы вы можете напрямую обратиться к глобальному массиву $меню WP:

function wpse_233129_admin_menu_items() {
    global $menu;

    foreach ( $menu as $key => $value ) {
        if ( 'upload.php' == $value[2] ) {
            $oldkey = $key;
        }
    }

    $newkey = 26; // use whatever index gets you the position you want
    // if this key is in use you will write over a menu item!
    $menu[$newkey]=$menu[$oldkey];
    $menu[$oldkey]=array();

}
add_action('admin_menu', 'wpse_233129_admin_menu_items');

Обратите внимание на комментарий к возможность перезаписи другого пункта меню. Кодирование в поиске индекса массива, который не конфликтует, оставлено в качестве упражнения для читателя. Конечно, это не проблема, если вы используете первый метод.

Есть что-то в том, чтобы вот так возиться с глобалами WP, что заставляет меня чувствовать себя грязным. Изменения во внутренней работе WP могут все испортить для вас. Используйте абстракции, предоставляемые хуками и API, когда можете.

 4
Author: Andy Macaulay-Brook, 2016-07-25 14:27:58

Быстрый Поиск в Google дал мне несколько результатов, и мне удалось найти простое решение.

Приведенный ниже код взят с веб-сайта Учебника по простому веб-дизайну, но я вставлю его ниже на случай, если эта ссылка когда-нибудь сломается.

function reorder_admin_menu( $__return_true ) {
    return array(
         'index.php', // Dashboard
         'edit.php?post_type=page', // Pages
         'edit.php', // Posts
         'upload.php', // Media
         'themes.php', // Appearance
         'separator1', // --Space--
         'edit-comments.php', // Comments
         'users.php', // Users
         'separator2', // --Space--
         'plugins.php', // Plugins
         'tools.php', // Tools
         'options-general.php', // Settings
   );
}
add_filter( 'custom_menu_order', 'reorder_admin_menu' );
add_filter( 'menu_order', 'reorder_admin_menu' );

Вы можете изменить порядок меню, просто переместив media.php туда, где вы хотите, чтобы оно отображалось

Как вы можете видеть, приведенный выше код хорошо прокомментирован и показывает вам, какие .php файлы являются какой ссылкой:)

 1
Author: Stephen, 2016-07-25 12:53:36

После получения повторяющихся ошибок PHP с приведенным выше кодом я пошел с плагином,
Редактор меню администратора. Я не только могу изменить порядок меню, но также могу скрывать или перемещать меню, добавленные плагинами.

 0
Author: Slam, 2018-03-23 20:57:18