✅Diferente Menú según el ROL de Usuario en WordPress (Sin Plugins)

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:
    1. Identificación del usuario: El código mira quién está usando la biblioteca en ese momento.
    2. Asignación de roles: Le asigna al usuario un «rol» basado en su función (puede ser lector, autor, bibliotecario, etc.).
    3. 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:
    1. Comunidades literarias: Ideal para sitios donde escritores y lectores interactúan, cada uno con su espacio dedicado.
    2. 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.

diferente menu segun el rol de usuario en wordpress sin plugins

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)

  1. 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.
  2. Definir el mapeo de ID de menú por rol:
    • Crea un array llamado $menu_por_rol que 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.
  3. Obtener la ID del menú para el rol actual:
    • Usa $rol_actual para buscar en $menu_por_rol y obtener la ID de menú correspondiente al rol actual, almacenándola en la variable $menu_id.
  4. 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 menu en $args con la ID del menú obtenida.
  5. Devolver los argumentos modificados:
    • Retorna los argumentos ($args) modificados, que ahora incluyen la configuración del menú según el rol del usuario.

Aplicar el filtro wp_nav_menu_args:

  • La función add_filter('wp_nav_menu_args', 'personalizar_menu_por_rol') aplica la función personalizar_menu_por_rol como un filtro para modificar los argumentos de la función wp_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.

Compartir Artículo