Как удалить все меню администратора?


Мне нужно настроить панель администратора для моего пользователя. Итак, как мне удалить все меню администратора? Не удаляйте пункт меню, я имею в виду полностью удалить левую вертикальную строку меню, включить дизайн меню (например, css, фон..и т.д.). Я хочу, чтобы он стал пустым.

Я могу сделать это с помощью css-взлома. Но я предпочитаю использовать для этого крюк. Есть какие-нибудь идеи?

Спасибо

Author: dev-jim, 2012-05-14

5 answers

Правильный крючок для использования - admin_menu, а затем создайте функцию для удаления меню, которые вы хотите удалить. Следующие 2 функции удаляют все меню.

add_action( 'admin_menu', 'remove_admin_menus' );
add_action( 'admin_menu', 'remove_admin_submenus' );

//Remove top level admin menus
function remove_admin_menus() {
    remove_menu_page( 'edit-comments.php' );
    remove_menu_page( 'link-manager.php' );
    remove_menu_page( 'tools.php' );
    remove_menu_page( 'plugins.php' );
    remove_menu_page( 'users.php' );
    remove_menu_page( 'options-general.php' );
    remove_menu_page( 'upload.php' );
    remove_menu_page( 'edit.php' );
    remove_menu_page( 'edit.php?post_type=page' );
    remove_menu_page( 'themes.php' );
}


//Remove sub level admin menus
function remove_admin_submenus() {
    remove_submenu_page( 'themes.php', 'theme-editor.php' );
    remove_submenu_page( 'themes.php', 'themes.php' );
    remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=post_tag' );
    remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=category' );
    remove_submenu_page( 'edit.php', 'post-new.php' );
    remove_submenu_page( 'themes.php', 'nav-menus.php' );
    remove_submenu_page( 'themes.php', 'widgets.php' );
    remove_submenu_page( 'themes.php', 'theme-editor.php' );
    remove_submenu_page( 'plugins.php', 'plugin-editor.php' );
    remove_submenu_page( 'plugins.php', 'plugin-install.php' );
    remove_submenu_page( 'users.php', 'users.php' );
    remove_submenu_page( 'users.php', 'user-new.php' );
    remove_submenu_page( 'upload.php', 'media-new.php' );
    remove_submenu_page( 'options-general.php', 'options-writing.php' );
    remove_submenu_page( 'options-general.php', 'options-discussion.php' );
    remove_submenu_page( 'options-general.php', 'options-reading.php' );
    remove_submenu_page( 'options-general.php', 'options-discussion.php' );
    remove_submenu_page( 'options-general.php', 'options-media.php' );
    remove_submenu_page( 'options-general.php', 'options-privacy.php' );
    remove_submenu_page( 'options-general.php', 'options-permalinks.php' );
    remove_submenu_page( 'index.php', 'update-core.php' );
}

Снимок экрана левого меню с использованием вышеуказанных 2 функций:

enter image description here

 16
Author: Chris_O, 2013-09-27 06:02:25

Следуя примеру /wp-admin/admin-header.php -> /wp-admin/menu-header.php для этого нет крючка.

Решение состоит в том, чтобы подключить admin_head и выполнить некоторые CSS + jQuery

add_action('admin_head', 'wpse_52099_script_enqueuer');
function wpse_52099_script_enqueuer(){
    if(!current_user_can('administrator')) {
        echo <<<HTML
        <style type="text/css">
        #wpcontent, #footer { margin-left: 0px; }
        </style>
        <script type="text/javascript">
        jQuery(document).ready( function($) {
            $('#adminmenuback, #adminmenuwrap').remove();
        });     
        </script>
HTML;
    }
}

[ обновление]
В соответствии с разъяснением вопроса, где становится ясно, что мотивацией является брендинг области администрирования, вот 4 плагина, которые я использую для этого:

 5
Author: brasofilo, 2013-07-17 16:09:44

Единственный удобный для крючка способ, который я знаю, - это использовать remove_menu_page() для каждого отдельного пункта меню. Даже тогда я не знаю, что происходит с самой левой полосой (свернется ли она до ширины 0 пикселей или что). Даже с использованием крючков, я полагаю, в какой-то момент вам захочется поставить в очередь таблицу стилей администратора, чтобы очистить то, что осталось от стилей разметки меню.

Я бы был осторожен в этом. Например, если вы удалите "Настройки", то любые плагины, которые создают страницы меню в Меню "Настройки" недоступно. В общем, мне интересно, насколько реально полностью удалить меню.

 2
Author: mrwweb, 2012-05-14 18:40:48
add_action( 'admin_menu', 'remove_admin_menus' );

function remove_admin_menus(){
    global $menu;
    $menu = array();
}
 1
Author: kakoma, 2016-04-16 04:13:21

Я улучшаю решение @brasofilo, так как в нем есть небольшая ошибка - при перезагрузке страницы с не лучшим подключением к Интернету меню появится на очень короткое время. Чтобы избежать этого, я добавил немного больше css:

add_action('admin_head', 'wpse_52099_script_enqueuer');

function wpse_52099_script_enqueuer() {

    if(!current_user_can('administrator')) { 

echo <<<HTML
<style type="text/css">
#wpcontent, #footer { margin-left: 0px !important; }
#adminmenuback, #adminmenuwrap { display: none !important; }
</style>
<script type="text/javascript">
jQuery(document).ready( function($) {
    $('#adminmenuback, #adminmenuwrap').remove();
});
</script>
HTML;

    }
}
 0
Author: romapad, 2016-05-30 19:29:02