Personalización del administrador de WordPress: Menús de administración personalizados
() translation by (you can also view the original English article)



En las dos primeras partes de esta serie, te mostré cómo personalizar la pantalla de inicio de sesión de WordPress y el escritorio. En esta tercera parte te mostraré cómo personalizar los menús de administración de WordPress.
En este tutorial aprenderás a:
- Cambiar el nombre de un elemento de menú (en este caso, 'Entradas')
- Eliminar un elemento de menú (en este caso, 'Comentarios')
- Reordena el menú para que los elementos que utilices con más frecuencia estén situados más arriba
Para hacer esto, voy a crear un plugin, si ya has creado un plugin tras seguir las Partes 1 y 2 de esta serie es posible que prefieras añadir el código de este tutorial a ese plugin, lo que te proporcionará un plugin que contiene toda la personalización que hayas creado para el administrador.
Lo que necesitarás para completar este tutorial
Para completar este tutorial necesitarás:
- Una instalación de WordPress
- Acceso a la carpeta de plugins de tu sitio para añadir tu plugin
- Un editor de texto para crear tu plugin
Configuración del plugin
Al principio de mi plugin, estoy añadiendo las siguientes líneas:
1 |
/*
|
2 |
Plugin Name: WPTutsPlus Customize the Admin Part 3 - admin menus
|
3 |
Plugin URI: https://rachelmccollin.co.uk
|
4 |
Description: This plugin supports the tutorial in wptutsplus. It customizes the WordPress dashboard.
|
5 |
Version: 1.0
|
6 |
Author: Rachel McCollin
|
7 |
Author URI: http://rachelmccollin.com
|
8 |
License: GPLv2
|
9 |
*/
|
1. Cambiar el nombre de un elemento de menú
La mayoría de los sitios que construyo en WordPress no son blogs, generalmente son sitios de clientes que, si usan las entradas, lo harán para publicar noticias en lugar de entradas de blog. Así que voy a cambiar el nombre de 'Entradas' (Posts) en el menú de administración a 'Noticias'. Puedes cambiar el nombre de cualquier tipo de contenido de WordPress a lo que desees, por ejemplo:
- las entradas podrían convertirse en noticias, artículos o actualizaciones
- medios podría convertirse en imágenes, archivos adjuntos o cargas
Para cambiar el nombre de las entradas, añade el siguiente código a tu plugin:
1 |
// Rename Posts to News in Menu
|
2 |
function wptutsplus_change_post_menu_label() { |
3 |
global $menu; |
4 |
global $submenu; |
5 |
$menu[5][0] = 'News'; |
6 |
$submenu['edit.php'][5][0] = 'News Items'; |
7 |
$submenu['edit.php'][10][0] = 'Add News Item'; |
8 |
}
|
9 |
add_action( 'admin_menu', 'wptutsplus_change_post_menu_label' ); |
Este código hace referencia a las variables globales $menu
y $submenu
, los números entre corchetes le dicen a WordPress a qué elementos de menú me refiero, ya que cada elemento de menú tiene su propio número que corresponde con su orden en dicho menú. Adjunto mi función para cambiar el nombre de las entradas al gancho admin_menu
, que es el gancho de acción que usaré a lo largo de este tutorial.
Esto cambia el menú de administración como se muestra en la captura de pantalla:



Nota: el escritorio que se muestra en la captura de pantalla se ha personalizado para que no se parezca al panel estándar. Consulta la Parte 2 de esta serie para obtener más detalles.
Como puedes ver, donde normalmente está el menú 'Entradas', ahora se lee 'Noticias'. Esto te da acceso a las entradas de la misma manera que antes, pero con una etiqueta diferente. El tipo de entrada no ha cambiado.
El siguiente paso consiste en cambiar el nombre de los elementos del submenú de las entradas y cualquier otro uso del término 'entrada' en las pantallas de administración.
En tu plugin, añade lo siguiente:
1 |
// Edit submenus
|
2 |
function wptutsplus_change_post_object_label() { |
3 |
global $wp_post_types; |
4 |
$labels = &$wp_post_types['post']->labels; |
5 |
$labels->name = 'News'; |
6 |
$labels->singular_name = 'News Item'; |
7 |
$labels->add_new = 'Add News Item'; |
8 |
$labels->add_new_item = 'Add News Item'; |
9 |
$labels->edit_item = 'Edit News Item'; |
10 |
$labels->new_item = 'News Item'; |
11 |
$labels->view_item = 'View News Item'; |
12 |
$labels->search_items = 'Search News Items'; |
13 |
$labels->not_found = 'No News Items found'; |
14 |
$labels->not_found_in_trash = 'No News Items found in Trash'; |
15 |
}
|
16 |
add_action( 'admin_menu', 'wptutsplus_change_post_object_label' ); |
Ahora no solo ha cambiado el elemento de menú de nivel superior, sino todas las referencias a las entradas, como se muestra en la captura de pantalla:



El submenú tiene nuevas etiquetas al igual que el enlace 'Add News Item' (Añadir elemento de noticias) y el título de la pantalla de edición.
2. Eliminar elementos del menú
Ahora el menú de administración está más cerca de reflejar la estructura de los sitios de mis clientes, ya que las entradas se conocen como noticias. Pero aún puedo simplificar más las cosas eliminando los elementos del menú que no necesito.
En la mayoría de los sitios que construyo para mis clientes, los comentarios están desactivados. Así que puedo eliminarlos del menú de administración para evitar confundir a los clientes.
En tu plugin, añade lo siguiente:
1 |
// Remove Comments menu item for all but Administrators
|
2 |
function wptutsplus_remove_comments_menu_item() { |
3 |
$user = wp_get_current_user(); |
4 |
if ( ! $user->has_cap( 'manage_options' ) ) { |
5 |
remove_menu_page( 'edit-comments.php' ); |
6 |
}
|
7 |
}
|
8 |
add_action( 'admin_menu', 'wptutsplus_remove_comments_menu_item' ); |
Esto utiliza el gancho remove_menu_page
con el slug para la página de edición de comentarios, que es edit-comments.php
.
Nota: He incluido la función en una comprobación para la capacidad manage_options
, para que el elemento de menú Comentarios (Comments) no quede oculto para los administradores, ¡por si acaso!
Como puedes ver en la captura de pantalla, el elemento de menú Comentarios ha sido ahora eliminado.



3. Reordenar elementos del menú
La personalización final que voy a hacer es reordenar el menú de administración, para que los elementos que mis clientes usarán con más frecuencia sean más altos. En este caso, voy a mover el elemento de menú Páginas por encima de los medios.
Esto se hace utilizando dos filtros:
-
custom_menu_order
, que activa el filtromenu_order
y debe tener__return_true
como valor. -
menu_order
, al que se adjunta la función que define el nuevo orden de menú.
En tu plugin, añade lo siguiente:
1 |
// Move Pages above Media
|
2 |
function wptutsplus_change_menu_order( $menu_order ) { |
3 |
return array( |
4 |
'index.php', |
5 |
'edit.php', |
6 |
'edit.php?post_type=page', |
7 |
'upload.php', |
8 |
);
|
9 |
}
|
10 |
add_filter( 'custom_menu_order', '__return_true' ); |
11 |
add_filter( 'menu_order', 'wptutsplus_change_menu_order' ); |
Esto reordenará el menú en el orden especificado en la matriz, de modo que Medios (Media) aparezca después de Páginas (Pages). Ahora tienes un sencillo menú de administración personalizado.
Resumen
Personalizar el menú de administración de WordPress puede hacer que el proceso de administración de un sitio sea más sencillo y rápido para ti y para tus clientes, dando a los elementos del menú etiquetas más apropiadas, eliminando los elementos no deseados y asegurando que el menú esté en el orden más práctico. Puedes llevar esto más allá moviendo cualquier tipo de entrada personalizada hacia arriba o hacia abajo en tu menú, o cambiando el nombre de los medios tal vez, y mucho más.