Cómo ocultar menús en el administrador de WordPress

13 feb 2014, 07:43:26
Vistas: 17.1K
Votos: 5

Quiero ocultar algunos menús en el panel de administración: Apariencia, Plugins y Herramientas.

¿Cómo ocultarlos sin usar un plugin?

¿Y cómo puedo volver a mostrarlos fácilmente más tarde?

2
Comentarios

No entiendo muy bien tu pregunta sobre cómo mostrarlo nuevamente. Al eliminar las funciones de mi respuesta a continuación, deberían reaparecer.

iyrin iyrin
13 feb 2014 08:33:08

¿Para todos los roles y capacidades?

Brad Dalton Brad Dalton
13 feb 2014 12:58:33
Todas las respuestas a la pregunta 3
5

Puedes hacer esto con remove_menu_page. Añade el slug del menú correspondiente en tu archivo functions.php de tu tema o plugin.

<?php remove_menu_page( $menu_slug ) ?>

Ten en cuenta que los usuarios aún pueden acceder a estos menús mediante un enlace directo. Si deseas bloquear el acceso de un usuario a un menú, deberás configurar un rol de usuario y asegurarte de que no tengan las capacidades relevantes.

Aquí tienes una lista de ejemplos de slugs para los menús incluidos en una instalación limpia de WordPress.

<?php
function remove_menus(){  

  remove_menu_page( 'index.php' );                  //Escritorio  
  remove_menu_page( 'edit.php' );                   //Entradas  
  remove_menu_page( 'upload.php' );                 //Medios  
  remove_menu_page( 'edit.php?post_type=page' );    //Páginas  
  remove_menu_page( 'edit-comments.php' );          //Comentarios  
  remove_menu_page( 'themes.php' );                 //Apariencia  
  remove_menu_page( 'plugins.php' );                //Plugins  
  remove_menu_page( 'users.php' );                  //Usuarios  
  remove_menu_page( 'tools.php' );                  //Herramientas  
  remove_menu_page( 'options-general.php' );        //Ajustes  

}  
add_action( 'admin_menu', 'remove_menus' );  
?>
13 feb 2014 08:22:57
Comentarios

¿Esto también los elimina de la barra de administración en el frontend para usuarios logueados?

Brad Dalton Brad Dalton
13 feb 2014 12:59:56

Parece que no afecta la barra de administración.

iyrin iyrin
13 feb 2014 13:20:01

@RyanLoremIpsum: ¿cómo si solo queremos ocultar post->etiqueta? (no todo el menú post)

Lena Queen Lena Queen
13 feb 2014 13:27:17

No entiendo la pregunta. Si te refieres a cómo eliminar un elemento del submenú "Etiquetas" del menú "Entradas" en el panel de administración, esto se puede hacer con remove_submenu_page( $menu_slug, $submenu_slug );. Puedes encontrar ejemplos en remove submenu page en el codex de WordPress.

iyrin iyrin
13 feb 2014 13:37:26

@RyanLoremIpsum esa es una pregunta adicional, y gracias por la ayuda

Lena Queen Lena Queen
13 feb 2014 17:53:14
0
0

Este es un fragmento de código interesante del plugin Core Functionality de Bill Erickson.

/**
 * Eliminar elementos del menú
 * @since 1.0.0
 *
 * Elimina elementos del menú no utilizados añadiéndolos al array.
 * Ver la lista comentada de elementos del menú como referencia.
 *
 */
function ni_remove_menus() {
    global $menu;

    // Ejemplo:
    //$restricted = array(__('Escritorio'), __('Entradas'), __('Medios'), __('Enlaces'), __('Páginas'), __('Apariencia'), __('Herramientas'), __('Usuarios'), __('Ajustes'), __('Comentarios'), __('Plugins'));
    end($menu);
    while (prev($menu)) {
           $value = explode(' ', $menu[key($menu)][0]);
           if(in_array($value[0] != NULL ? $value[0] : "", $restricted)) {
               unset($menu[key($menu)]);
           }
    }
}
add_action('admin_menu', 'ni_remove_menus');

Descomenta el array $restricted e incluye los elementos del menú que quieras ocultar. El ejemplo contiene todos los elementos del menú como referencia.

13 feb 2014 08:58:59