web-dev-qa-db-fra.com

Comment supprimer tout le menu administrateur?

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 par hack css. Mais je préfère utiliser hook pour le faire. Des idées?

Merci

12
dev-jim

Le hook 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 en utilisant les 2 fonctions ci-dessus:

enter image description here

14
Chris_O

En suivant/wp-admin/admin-header.php->/wp-admin/menu-header.phpil 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;
    }
}

[update]
Selon une clarification de la question, il est clair que la motivation est branding la zone d'administration, ce sont les 4 plugins que j'utilise pour cela:

  • Adminimize (masque de gros morceaux d'interface WordPress, filtrage par rôle)
  • Menu déroulant Admin de Ozh ' (tout le menu admin dans un menu déroulant horizontal basé sur CSS)
  • Menus Admin fixes (compagnon idéal pour Ozh)
  • Tweaks Admin (Je suis l'auteur de celui-ci, et son objectif principal est de personnaliser de nombreux domaines de l'interface d'administration)
4
brasofilo

Le seul moyen que je connaisse de prendre un crochet 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 en utilisant les crochets, j'imagine qu'à un moment donné, vous voudrez mettre en file d'attente une feuille de style d'administrateur pour nettoyer ce qui reste des styles de balisage de menu.

Je ferais attention à faire 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.

2
mrwweb
add_action( 'admin_menu', 'remove_admin_menus' );

function remove_admin_menus(){
    global $menu;
    $menu = array();
}
1
kakoma

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 l'éviter, 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;

    }
}
0
romapad