¿Cómo eliminar todo el menú de administración?

11

Necesito personalizar el panel de administración para mi usuario. Entonces, ¿cómo elimino todo el menú de administración? No eliminar el elemento del menú, quiero decir eliminar por completo la barra de menú vertical izquierda, incluir el diseño del menú (p. Ej., Css, background..etc). Quiero que se quede en blanco.

Puedo hacerlo por css hack. Pero prefiero usar gancho para hacerlo. ¿Alguna idea?

Gracias

    
pregunta dev-jim 14.05.2012 - 19:38

5 respuestas

13

El enganche correcto a usar es admin_menu y luego crea una función para eliminar los menús que desea eliminar. Las siguientes 2 funciones eliminan todos los menús.

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

Captura de pantalla del menú de la izquierda con las 2 funciones anteriores:

    
respondido por el Chris_O 15.05.2012 - 05:09
4

Siguiendo el ejemplo de /wp-admin/admin-header.php - > /wp-admin/menu-header.php no hay ningún gancho para hacerlo.

Una solución es enlazar en admin_head y hacer algo de 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;
    }
}

[actualizar]
Según una aclaración a la pregunta, donde queda claro que la motivación es marca el área de administración, estos son los 4 complementos que uso para eso:

respondido por el brasofilo 15.05.2012 - 03:42
2

La única forma fácil de usar de los ganchos que conozco es usar remove_menu_page() para cada elemento del menú. Incluso entonces, no sé qué pasa con la barra izquierda (si se colapsaría hasta el ancho de 0px o qué). Incluso con el uso de los ganchos, imagino que en algún momento querrá poner en cola una hoja de estilo de administración para limpiar lo que queda de los estilos de marcado del menú.

Tendría cuidado de hacer esto. Por ejemplo, si elimina "Configuración", no se podrá acceder a ningún complemento que cree páginas de menú en el menú "Configuración". En general, me pregunto si es realmente sostenible eliminar completamente el menú.

    
respondido por el mrwweb 14.05.2012 - 20:40
1
add_action( 'admin_menu', 'remove_admin_menus' );

function remove_admin_menus(){
    global $menu;
    $menu = array();
}
    
respondido por el kakoma 16.04.2016 - 06:13
0

Mejoré la solución de @brasofilo, ya que tiene un pequeño error: en la recarga de la página no aparecerá el mejor menú de conexión a Internet por muy poco tiempo. Para evitarlo agregué un poco más 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;

    }
}
    
respondido por el romapad 30.05.2016 - 21:29

Lea otras preguntas en las etiquetas