Comment supprimer tout le menu administrateur?

11

Je dois personnaliser le panneau d'administration pour mon utilisateur. Alors, comment puis-je supprimer tout le menu administrateur? Ne supprimez pas l'élément de menu, je veux dire entièrement supprimer la barre de menu verticale gauche, inclure la conception du menu (par exemple, css, background..etc). Je veux qu'il devienne blanc.

Je peux le faire en hack css. Mais je préfère utiliser hook pour le faire. Des idées?

Merci

    
posée dev-jim 14.05.2012 - 19:38

5 réponses

13

Le crochet approprié à utiliser est admin_menu , puis créez une fonction pour supprimer les menus que vous souhaitez supprimer. Les 2 fonctions suivantes suppriment tous les menus.

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' );
}

Capture d'écran du menu de gauche à l'aide des 2 fonctions ci-dessus:

    
réponse donnée Chris_O 15.05.2012 - 05:09
4

Suivre /wp-admin/admin-header.php - > /wp-admin/menu-header.php il n'y a pas de crochet pour le faire.

Une solution consiste à accrocher admin_head et à faire du 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;
    }
}

[mise à jour]
Pour clarifier la question, il est clair que la motivation est la marque dans la zone d'administration, ce sont les 4 plugins que j'utilise pour cela:

réponse donnée brasofilo 15.05.2012 - 03:42
2

Le seul moyen que je connaisse pour le hook est d'utiliser remove_menu_page() pour chaque élément de menu. Même dans ce cas, je ne sais pas ce qui arrive à la barre de gauche elle-même (si elle s’effondrait jusqu’à une largeur de 0px ou quoi). Même avec l’utilisation des crochets, j’imagine qu’à un moment donné, vous voudrez peut-être mettre en file d'attente une feuille de style d'administrateur pour nettoyer ce qui reste des styles de marquage de menu.

Je ferais attention à cela. Par exemple, si vous supprimez "Paramètres", aucun plug-in créant des pages de menu dans le menu "Paramètres" est inaccessible. En général, je me demande à quel point il est viable de supprimer complètement le menu.

    
réponse donnée mrwweb 14.05.2012 - 20:40
1
add_action( 'admin_menu', 'remove_admin_menus' );

function remove_admin_menus(){
    global $menu;
    $menu = array();
}
    
réponse donnée kakoma 16.04.2016 - 06:13
0

J'améliore la solution de @brasofilo car il s'agit d'un petit bug - le menu de rechargement de page avec la meilleure connexion Internet apparaît pendant très peu de temps. Pour éviter cela, j'ai ajouté un peu plus de 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;

    }
}
    
réponse donnée romapad 30.05.2016 - 21:29

Lire d'autres questions sur les étiquettes