Enrique J. Ros

Menús condicionales en WordPress

En ocasiones necesitamos mostrar en nuestro sitio web un menú o quizá alguno de los elementos de un menú de forma condicional, es decir, que al visitante se le muestre el menú (o los elementos concretos que decidamos) dependiendo de en qué lugar de la web se encuentre o incluso dependiendo de sus privilegios (si es cliente con cuenta o no, si es administrador o colaborador de la web, etc).

Algo así como lo que veíamos hace unas semanas cuando hablaba de mostrar widgets de forma condicional, pero aplicado ahora a los menús.

Esto lo vamos a conseguir gracias a un plugin gratuito y muy útil, Menu Item Visibility Control.

Vamos a ver primero en un vídeo cómo funciona (que será mucho más fácil que explicado) y después te pondré toda clase de ejemplos de sus posibilidades y una lista más o menos exhaustiva de lo que se llaman los conditional tags, las funciones condicionales de WordPress mediante las que funciona este plugin. ¡Dentro vídeo!

Ya lo has visto. ¿Parece complicado? Pues ya verás con unos pocos ejemplos que no lo es.

Los conditional tags de WordPress

Como has podido ver en el vídeo, el plugin hace uso de lo que WordPress llama los conditional tags, que son una serie de funciones que forman parte de WordPress y que sirven precisamente para establecer ciertos parámetros de forma condicional.

La lista completa está en el Códex de WordPress, concretamente aquí, pero a menos que sepas programar en PHP y conozcas las funciones propias de WordPress eso te va a resultar un follón.

Así que creo que lo mejor es ir viendo en este artículo la forma de utilizarlos para conseguir las cosas que más habitualmente se necesitan. Si no encuentras en el artículo solución a tu necesidad no dudes en preguntar en los comentarios o a través del formulario de contacto.

Como digo en el vídeo, los condicionales se aplican individualmente a cada elemento del menú. Si queremos que apliquen al menú completo deberemos incluir la condición en todos sus elementos.

No hay problema con esto ya que cada elemento puede admitir varias condiciones, como veremos más adelante en el artículo al hablar de los operadores lógicos.

Tags condicionales más útiles

Ahí van, te pongo lo que hace cada uno pero no te agobies si no lo entiendes, porque los veremos en los ejemplos.

Por supuesto que hay muchos más, pero con estos, aislados o en combinación unos con otros resolveremos el 90% de las situaciones. Además nos permiten hacer cosas como:

Lo mismo se admite para las etiquetas, páginas, entradas individuales… Esto es muy potente a la hora de establecer condiciones para los elementos de los menús.

Usando los tags condicionales

Pero basta de cháchara y vamos a empezar a ver ejemplos concretos. Intentaré evitar tecnicismos en la medida de lo posible, pero de nuevo te invito a preguntar si hay algo que no entiendas o no te ha quedado claro del todo.

Especificando dónde mostrar o dónde ocultar

Lo bueno de todo esto es que puedes especificar los condicionales de dos formas: indicando dónde debe mostrarse el elemento o bien indicando dónde debe ocultarse, simplemente incluyendo un signo. Por ejemplo:

Menú condicional dependiendo de qué lugar de la web está viendo el usuario

Empecemos por mostrar elementos del menú en algunos lugares de la web. Digamos que tienes un comercio electrónico con un blog, y que utilizas los contenidos de ese blog para atraer clientes mediante marketing de contenidos.

Te interesará entonces que en todo el blog aparezca el enlace a la tienda online, pero no a la inversa, ya que no quieres que alguien que llegue directo a un producto se vaya a curiosear al blog y finalmente acabe olvidándose de ese producto que le interesaba.

Lo que queremos entonces es que el elemento «Blog» del menú de WordPress sólo se muestre en la esfera del blog, y no la de la tienda. Así a ese elemento podemos añadirle los siguientes condicionales:

Después ya tendrás que afinar con cosas como si quieres que aparezca en las páginas o no, etcétera.

Menú condicional dependiendo de qué privilegios tiene el usuario

No sólo puedes utilizar condicionales que decidan si mostrar el elemento o no en función del lugar de la web, sino también en función de los privilegios que tenga el usuario. Como por ejemplo si tiene cuenta de cliente o no.

Por ejemplo, si quieres mostrar el elemento de WooCommerce «Mi cuenta». Ya sabes que ese enlace funciona para todo el mundo, esté dentro de su cuenta o no, aunque de forma distinta: si estás logueado te lleva a los detalles de tu cuenta, y si no a la página de registro.

Bueno, pues con este plugin podríamos afinar eso creando dos elementos en el menú, ambos iguales, pero con distintos nombres: «Mi cuenta» y «Registrarse». Y después mostrar uno u otro en función de si el visitante tiene cuenta (y está logueado) o no, con is_user_logged_in ().

Condiciones complejas: los operadores lógicos

Los tags condicionales no sólo pueden utilizarse así, sueltos, sino que también pueden combinarse entre ellos para crear condiciones más complejas:

Si por ejemplo quiero que un elemento del menú se muestre sólo a los usuarios con cuenta que estén en una determinada categoría de la tienda:

is_user_logged_in () && is_product_category ('Muebles de cocina')

O, pongamos otro ejemplo, si queremos que cierto elemento del menú sólo sea visible desde las páginas de «Aviso legal», «Política de cookies» y «Condiciones de envío»:

is_page ('Aviso legal') || is_page ('Política de cookies') || is_page ('Condiciones de envío')

O, por último, si queremos que un elemento del menú aparezca sólo en las entradas cuyo autor sean o Pepe o Juan:

is single () && (is_author ('Pepe') || is_author ('Juan'))

Como ves, los paréntesis aumentan las posibilidades hasta el infinito.

Todo el control gracias a PHP

A decir verdad, este plugin admite como condicional no sólo cualquier tag condicional de WordPress, sino que en realidad admite cualquier función de PHP. Es decir, si sabes programar en PHP (y más aún, si programas para WordPress), no hay límites en lo que puedes hacer con esto: control total sobre el menú.

Así que ya sabes, si necesitas hacer alguna cosa en especial con tu WordPress (ya sea con los menús o con cualquier otra cosa) no dudes en contactarme. 😉

Salir de la versión móvil