Este código en WordPress actúa como un «maestro de menús» que adapta lo que cada usuario ve en su barra de navegación según su «rol» o función en el sitio.
Imagina que tienes una biblioteca virtual en línea en la que diferentes personas tienen roles específicos. Este código en WordPress sería como un «bibliotecario digital» que organiza los estantes virtuales de libros según el trabajo de cada persona:
- Cómo funciona:
- Identificación del usuario: El código mira quién está usando la biblioteca en ese momento.
- Asignación de roles: Le asigna al usuario un «rol» basado en su función (puede ser lector, autor, bibliotecario, etc.).
- Asignación de menús: Asocia cada «rol» con una sección específica de la biblioteca. Por ejemplo, los «lectores» pueden ver un estante diferente al de los «autores» o «bibliotecarios».
- Ejemplo práctico:
- Lector: Accede a estantes con libros disponibles para su lectura.
- Autor: Ve opciones relacionadas con la subida de sus propias obras y participación en foros literarios.
- Bibliotecario: Tiene acceso a herramientas de gestión, como añadir nuevos libros o moderar discusiones.
- Casos de uso:
- Comunidades literarias: Ideal para sitios donde escritores y lectores interactúan, cada uno con su espacio dedicado.
- Plataformas educativas: Puede adaptarse a estudiantes, profesores y administradores, cada uno con diferentes necesidades.
En resumen, este código personaliza la experiencia de la biblioteca en línea, asegurando que cada usuario vea en su «estantería» virtual solo lo relevante para su papel, facilitando así su interacción con la biblioteca digital.
Estoy seguro de que este artículo donde explico como crear roles de usuario personalizados en WordPress te va a interesar también.

El siguiente código tienes que agregarlo en el functions.php de tu tema hijo o utilizar un plugin como CODE SNIPPETS.
<?php
function personalizar_menu_por_rol($args) {
// Obtener el rol actual del usuario
$usuario_actual = wp_get_current_user();
$rol_actual = isset($usuario_actual->roles[0]) ? $usuario_actual->roles[0] : '';
// Definir el mapeo de ID de menú por rol
$menu_por_rol = array(
'editor' => 11, // Reemplaza 11 con la ID del menú para el rol de Editor
'author' => 12, // Reemplaza 12 con la ID del menú para el rol de Autor
'subscriber' => 13 // Reemplaza 13 con la ID del menú para el rol de Suscriptor
// Agrega más roles y menús según sea necesario
);
// Obtener la ID del menú para el rol actual
$menu_id = isset($menu_por_rol[$rol_actual]) ? $menu_por_rol[$rol_actual] : '';
// Configurar el menú principal solo si el usuario tiene la capacidad de 'read'
if (current_user_can('read')) {
$args['menu'] = $menu_id;
}
return $args;
}
// Aplicar el filtro wp_nav_menu_args
add_filter('wp_nav_menu_args', 'personalizar_menu_por_rol');
Lenguaje del código: HTML, XML (xml)
Entendiendo el Código
Función personalizar_menu_por_rol($args)
- Obtener el rol actual del usuario:
- Utiliza la función
wp_get_current_user()para obtener la información del usuario actual. - Luego, extrae el primer rol asignado al usuario (si tiene algún rol) y lo almacena en la variable
$rol_actual.
- Utiliza la función
- Definir el mapeo de ID de menú por rol:
- Crea un array llamado
$menu_por_rolque mapea roles a las ID de menús correspondientes. - Por ejemplo, si el rol actual es «editor», se asocia con la ID del menú 11.
- Crea un array llamado
- Obtener la ID del menú para el rol actual:
- Usa
$rol_actualpara buscar en$menu_por_roly obtener la ID de menú correspondiente al rol actual, almacenándola en la variable$menu_id.
- Usa
- Configurar el menú principal solo si el usuario tiene la capacidad de ‘read’:
- Verifica si el usuario actual tiene la capacidad de ‘read’ (leer). Esto asegura que solo los usuarios con la capacidad de leer puedan ver el menú personalizado.
- Si el usuario tiene la capacidad de ‘read’, configura el parámetro
menuen$argscon la ID del menú obtenida.
- Devolver los argumentos modificados:
- Retorna los argumentos (
$args) modificados, que ahora incluyen la configuración del menú según el rol del usuario.
- Retorna los argumentos (
Aplicar el filtro wp_nav_menu_args:
- La función
add_filter('wp_nav_menu_args', 'personalizar_menu_por_rol')aplica la funciónpersonalizar_menu_por_rolcomo un filtro para modificar los argumentos de la funciónwp_nav_menu()cuando se llama para renderizar un menú en el sitio.
En resumen, este código permite personalizar los menús de WordPress según el rol del usuario, asegurando que cada usuario vea el menú asignado a su rol específico.
Si necesitas adaptar el código a las necesidades de tu proyecto o agregar una funcionalidad específica a tu página web no dudes en contactar conmigo.
Nos vemos en el siguiente tutorial.
Un saludo.




Deja tus opiniones o dudas en los comentarios.