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

5/5 - (3 votos)
Compartir Artículo

Un comentario

  1. Fran Salas Master WP 1 año atrás

    Deja tus opiniones o dudas en los comentarios.

¿Tienes una duda o sugerencia sobre este artículo?

Puedes dejar un comentario de forma anónima, sin necesidad de registrarte ni proporcionar ningún dato personal. Tu mensaje se publicará como “Usuario Anónimo No Premium”, un perfil que agrupa a todos los visitantes no registrados.

Importante: para evitar el spam automático, todos los comentarios anónimos deben comenzar con el símbolo #. Ejemplo: # Tengo una duda sobre los shortcodes personalizados...

Este espacio está destinado exclusivamente a preguntas concretas, dudas o sugerencias relacionadas con el contenido del artículo. Por respeto a los demás lectores, no se publicarán temas sin relación.

Privacidad y normas:
  • No tienes que agregar tu nombre, correo ni ningún otro dato identificativo.
  • No se permiten enlaces en comentarios anónimos.
  • No se permiten símbolos especiales como < o > (menor y mayor que), ya que se consideran intentos de insertar código y serán bloqueados.
  • Todos los comentarios anónimos pasan por revisión antes de ser publicados y solo se aprobarán si aportan valor al contenido del artículo.
¿Quieres comentar con tu nombre y que tu mensaje se publique al instante? Inicia sesión o regístrate.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

0%