WordPress | 31 de octubre de 2013

Eliminar ítems del menú de administración de WordPress

WordPress va genial en cuanto a gestionar sitios y se comporta muy bien tanto para webs pequeñas como para las más complejas, aunque en ocasiones, me he encontrado con que el sitio que estoy creando es demasiado simple y varias de las opciones disponibles no serían utilizadas, así que ¿por qué no borrarlas del área de administración?

En un sitio que desarrollé esta semana, lo que necesitaba era eliminar del menú de administración el ítem Entradas y el ítem Comentarios, ya que el sitio no tendrá una sección de noticias o blog, por ende tampoco gestionará comentarios al menos hasta el desarrollo de un nuevo tema. Así que vamos a utilizarlo como ejemplo.

Para poder cumplir con este objetivo vamos a hacer uso de la función de WordPress remove_menu_page, que tal como su nombre lo indica, nos permitirá remover páginas del menú de administración.

Su uso es el siguiente:

Edit.php es la página desde donde podemos gestionar las entradas, entonces con esta función estaremos eliminando el ítem entradas y todos sus subitems del menú.

Puedes reemplazar edit.php por alguna de las siguientes páginas para eliminarlas:

  • Escritorio: index.php
  • Entradas: edit.php
  • Medios: upload.php
  • Páginas: edit.php?post_type=page
  • Comentarios: edit-comments.php
  • Apariencia: themes.php
  • Plugins: plugins.php
  • Usuarios: users.php
  • Herramientas: tools.php
  • Ajustes: options-general.php

Si tienes algún ítem de menú exclusivo para editar un custom post type puedes usar lo siguiente (similar a lo que usamos para las páginas), reemplazando «custom_post_type» por el slug de tu custom post type:

  • Custom post type: edit.php?post_type=custom_post_type

Además si algún plugin ha añadido un ítem extra al menú, también puedes eliminarlo. Para ello debes observar la url a la cual se dirige una vez que clickeas sobre él. En este caso, eliminaré el ítem que se añade al instalar Sucuri Scanner:

  • Sucuri Free: admin.php?page=sucuriscan

Pero no tan rápido. Para que esta función nos dé el resultado que deseamos, será necesario crear un Action Hook para decidir en qué momento se ejecutará. Para ello, usaremos admin_menu.

Con esta línea estamos indicando a WordPress que al momento de cargar la funcionalidad de admin_menu, también ejecute la función apk_eliminar_admin_menu_links. Así que vamos a crear esa función:

Como puedes ver, dentro de nuestra función personalizada, estamos eliminando el ítem entradas y el ítem comentarios.

Por último, vamos a decidir para qué tipo de usuarios vamos a eliminar estos elementos, ya que probablemente queramos ocultarlos para los usuarios con perfil de editor o inferior y mantenerlos presente para los usuarios tipo administrador. Para ello usamos lo siguiente:

El código completo que deberías añadir al final del archivo functions.php de tu tema activo sería el siguiente, en donde puedes cambiar el nombre de la función por una que se adecúe a tu sitio/tema y también debes modificarlo de acuerdo a los ítems que quieras eliminar:

Espero que esto te haya sido de ayuda. Si tienes una duda o algo que agregar te invito a dejar un comentario, y si quieres aprender más en detalle a crear y editar sitios en WordPress deberías suscribiste en el formulario que aparece a continuación:

También te podría interesar:

Debes planificar antes de elegir un tema de WordPress

Ya decidiste que harás tu sitio con WordPress. Te han dicho que es fácil, que no se necesita ser un maestro en programación y que podrías conseguir cosas muy interesantes en poco tiempo. Aprendiste a usarlo viendo tutoriales o tomando algún curso gratuito y te sentiste en condiciones para comenzar a trabajar. Lo primero que hiciste […]

Seguir leyendo...

Por qué pedir un adelanto al cliente

En este episodio de Huevos Revueltos hablamos sobre el adelanto que se suele pedir antes de comenzar un proyecto creativo (diseño, ilustración, desarrollo, etc) Esta es la segunda temporada de Huevos Revueltos donde tratamos temáticas relacionadas al negocio de trabajar como independiente o freelance. Un abrazo, @FranciscoAMK

Seguir leyendo...

A diseñar se aprende diseñando

Supongo que hay cosas que se pueden aprender solo observando o leyendo. Tienen que existir. Hay mucha gente que se aventura en alguna disciplina creativa (diseño, ilustración, fotografía, etc) pensando que con solo observar a otras personas o leyendo libros llegarán a alzar cierto grado de maestría, y eso debe estar fundamentado en alguna experiencia […]

Seguir leyendo...

Hay 9 opiniones

  1. Buen aporte!!, lo he probado pero no logro quitar el boton de +nuevo donde se despliegan las opciones. Quiero quitar «medios» para que los usuarios no puedan subir archivos. El plugin contact7 genera un menu «contacto» -> admin.php?page=wpcf7-new que tampoco quiere quitarse. Algún consejo??
    Gracias

    • Hola !! Muy interesante el artículo, hice todas las pruebas, se eliminan los menús correctamente, pero hay un pequeño inconveniente: Al eliminar CUALQUIER menú, por ejemplo tools o profile o cualquiera, algo sucede que el usuario con rol de Autor o Editor no puede subir imágenes a un post. Es decir, clickeo «añadir objeto»,»subir archivos», elige una imagen, clickea «insertar en la entrada», pero nunca se agrega al post. Hay alguna manera de arreglar esto? Muchas Gracias !!!

      • Les comento que ya logré solucionarlo, el error fue que estaba usando otra sentencia un poco diferente (en lugar de decir add_action( ‘admin_menu’…, decía add_action( ‘admin_init’…) que había sacado de otro blog. Pero la que aquí se indica funciona correctamente. Además algo útil también puede ser agregarle la condición de que si no es administrador , elimine determinados menu, solo encerrando el código entre una condicional de esta forma:

        if (!current_user_can(‘manage_options’)) { //Si no es el administrador
        add_action( ‘admin_menu’, ‘prefix_remove_dashboard_item’ );
        function prefix_remove_dashboard_item() {
        remove_menu_page( ‘edit.php’ ); //Eliminar Posts
        …etc…
        }

  2. Hola Francisco. Fue muy util tu aportacion.
    Quisiera pedirte si no tienes a mal, que me orientes con algo parecido, pero a la inversa.
    Ya logre eliminar el menu themes.php y otros, logicamente con todos sus sub menus, resulta que no quiero que Desaparezca el sub menu «Menus = nav-menus.php n» ni el sub menu widgets.php. ambos quiero mandarlos como menu de raiz para que sea visto tanto por el admin como por el editor
    Gracias de antemano

  3. Hola, yo necesito hacer algo parecido.
    Yo quisiera quitar alguna columna que se genera dentro de la sección Entradas. Se me acumulan tantas comunas que se hacen muy estrechas y los textos de info de cada Entrada se visualizan en vertical. He desactivado todos los plugins que no utilizo y aun así no consigo ampliar el espacio.
    Las columnas que se generan son ‘Titulo’, ‘Custom Sidebars’ , ‘las banderitas del idioma que genera WPML’, ‘Autor’ ‘Categorias’ ‘Etiquetas’ ‘Comentarios’ ‘Fecha’ ‘ID’ ‘SEO’ y ‘Miniatura’ (las imagen thumbnail de cada entrada).
    A mi me gustaría quitar las columnas ‘Autor’ (porque solo hay un usuario que es el administrador), ‘Etiquetas’ y ‘Comentarios’.
    Gracias

Y tú ¿Qué opinas?

Puede que no te responda, pero ten por seguro que leeré tu comentario. Por si acaso, tu email no se mostrará ;)

Recibe más artículos como este cada semana

Únete a los 8.161 suscriptores y recibe cada miércoles nuevo contenido sobre diseño, sitios web y creatividad.

¡Ya estamos casi! revisa tu bandeja de entrada para verificar tu email por favor.
Uy! Parece que algo salió mal procesando tu solicitud. Recaraga la página e inténtalo de nuevo.

Ya me suscribí antes, no me muestres esto.