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:

Toteking, David Fincher y el Subtexto en el Diseño

Uno de los discos que más escuché el 2018 fue Lebron del rapero español Toteking. En ese disco hay varias canciones que me gustan mucho, pero una en particular me llegó a emocionar hasta provocar un nudo en la garganta. Lo curioso es que esto no pasó la primera vez que escuché el tema, sino […]

Seguir leyendo...

Recién egresado y con cinco años de experiencia

Hay un tipo de ofertas laborales que hace enojar a muchas personas. No sé cómo será en otras industrias, pero he visto muchos diseñadores arder en furia al encontrar solicitudes que piden alguien joven pero con años de experiencia en el rubro. Es cierto que hay algo de ridículo en este tipo de solicitud, sin […]

Seguir leyendo...

Como editar una foto para Instagram en Lightroom

Este fin de semana tuve la oportunidad de salir a tomar fotos con mi esposa y unos amigos y, antes de publicar las imágenes en mi instagram, me gusta hacerle algunos ajustes en Lightroom para mejorar el contraste, los colores y otros detalles. En este caso, en lugar de simplemente hacer los ajustes y publicar […]

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 7.976 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.