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
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:
En suivant/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;
}
}
[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:
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.
add_action( 'admin_menu', 'remove_admin_menus' );
function remove_admin_menus(){
global $menu;
$menu = array();
}
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;
}
}