¿En qué podemos ayudarte?

Categorías

Search

¿Necesitas adaptar el menú de WordPress a tus necesidades? Por ejemplo añadir opciones dinámicamente o incluso cambiarlo completamente segun creas conveniente. Si es así estás en el lugar adecuado, veremos como hacerlo de una forma simple sin necesidad de añadir plugins a tu instalación.

Gestión del menú de WordPress

El sistema para gestionar los menús en WordPress es extremadamente sencillo. Vamos a Apariencia => Menús y seleccionamos el menú que nos interesa modificar o crear uno nuevo si fuese necesario.

Gestion de menu de wordpress

Dependiendo de la configuración de nuestra web y del tema que usemos la pantalla puede ser diferente. En mi caso uso WPML y tengo las opciones para gestionar los menús en diferentes idiomas. Sin embargo, el procedimiento general es el mismo en todos los casos. Seleccionamos los elementos deseados en el panel izquierdo y los arrastramos a la posición deseada dentro del menu con el que trabajamos.

Si desplegamos cualquier elemento, tendremos opciones adicionales para personalizarlo, entre ellas el texto a mostrar, podemos aplicarle una clase CSS específica o añadirle un icono.

El último paso al configurar un menú de WordPress es indicar donde queremos que se muestre. La ubicaciones disponibles dependerán del tema activo y los plugins instalados.

Una vez lo tengamos todos a nuestro gusto guardamos el menu y podremos comprobar su apariencia en el front-en de nuestra web.

Podemos crear tantos menús como necesitemos, o modificar los incluidos en nuestro tema activo.

Ubicaciones del menú de wordpress

 mentos Los menús creados de esta forma son estáticos y suelen ser los más habituales. Veamos a continuación como podemos crear menús dinámicos que se adapten al contenido y la actividad de nuestros visitantes.


Como implementar menus dinámicos en WordPress

WordPress incorpora menús dinámicos en todas las instalaciones. Los widgets que nos muestran las últimas entradas del blog, las listas de páginas de nuestras web, las categorías, la nube de etiquetas y las entradas archivadas; al fin y al cabo son menus auxiliares cuyo contenido se mantiene sincronizado con nuestros artículos.

Las funciones wp_list_pages(), wp_get_archives(), wp_list_categories() y wp_tag_cloud() nos permitirán generar esas listas y a la vez personalizarlas según nuestras necesidades. Entre otros aspectos podremos decidir la cantidad de elementos a mostrar, su ordenamiento, filtrados por diferentes criterios y modificar su apariencia visual. Todos los temas y plantillas ofrecen sus propias versiones de estos menús. Tambien existen muchos plugins relacionados con ellos. Por ejemplo:

En esta guía nos centraremos en los menús de navegación habituales. WordPress nos permite hacerlo de dos maneras:


1. Usar diferentes menús para cada caso.

Si usamos esta vía, crearemos diferentes versiones del menú y las mostraremos según nos convenga utilizando el filtro el filtro wp_nav_menu_args(). Este filtro recibe como argumento una matriz con diferentes parámetros que nos permiten seleccionar un menu existente, la ubicación en la que lo mostraremos y personalizar su visualización. De tods los argumentos usaremos los siguientes:

  • 'menu' - Lo usaremos para indicar el menú que queremos utilizar. Lo haremos indicando su nombre, su slug o su id.
  • 'theme_location' - Este parámetro indica en que ubicación se mostrará el menú seleccionado. Serán las ubicaciones registradas por el tema y plugins activos.

Un ejemplo típico de uso es mostrar un menu diferente para usuarios registrados. Siguiendo el ejemplo del apartado anterior, usaríamos una función similar a:

add_filter( 'wp_nav_menu_args', 'menu_usuarios_registrados' );
function menu_usuarios_registrados( $args ) {
   if( $args['theme_location'] == 'principal'  ) {
     $args['menu'] = is_user_logged_in() ? 'Menu Registrados' : 'Main Menu';
   }
  return $args;
}

Lo que hace esta función es comprobar la ubicación del menú a mostrar. Si se trata de la ubicación "principal" y el usuario está logueado mostramos el menú para usuarios registrados; en caso contrario mostramos nuestro menú principal. 


2. Modificar elementos del menú

Si solo necesitamos modificar algunos elementos del menú, entonces utilizaremos el filtro wp_nav_menu_items()En este caso  los parámetros del menú se pasan como un objeto de WordPress y tendremos un argumento adicional: los elementos del menú a visualizar. 

Teniendo en cuenta que el menú de WordPress es una listas no ordenada, usaríamos una función como esta para el ejemplo anterior:

add_filter( 'wp_nav_menu_items', 'enlaces_registro', 10, 2 );
  function enlaces_registro( $items, $args )
    if ($args->theme_location == 'principal')  {
        if  (is_user_logged_in() ) {$items .= '<li><a href="'. wp_logout_url() .'">Cerrar Sesión</a></li>'; }
        else {$items .= '<li><a href="'. site_url('wp-login.php') .'">Entrar</a></li>'; }
    }
   return $items;
}

Lo que hacemos es comprobar si el usuario tiene una sesión iniciada y dependiendo del resultado añadimos al menú principal el enlace para abrir o cerrar sesión según corresponda.

Condicionales de WordPress

Las funciones condicionales de WordPress son muy potentes que nos permiten determinar en todo momento el contenido que se visualiza y reaccionar en consecuencia. Estos son algunos de los más comunes

  • is_user_logged_in() - Nos dice si el usuario ha iniciado sesión o no
  • is_home() - Es verdadero si se muestra la página principal del blog
  • is_front_page() - Verdadero se muestra la página la portada de la web
  • is_page() - Verdadero si se muestra una página estática. Admite como argumento opcional una lista de páginas.
  • is_single() - Verdadero cuando se muestra un artículo del blog. Como en el caso anterior podemos indicar las entradas que nos interesan
  • is_category() - Nos dice si se está visualizando la página correspondente a la(s) categoría(s) indicada(s)
  • in_category() - Verdadero si la entrada pertenece a cualquiera de las categorias indicadas
  • has_term() - Nos permite comprobar los términos y taxonomías para una entrada
  • is_search() - Si se visualiza la página de búsqueda

Podemos combinar los condicionales y de esta forma crear menús dinámicos que se adapten al contenido mostrado. Esto hara que la navegación sea mucho más amigable para nuestros visitantes.


Conclusión

Como hemos visto personalizar el menu de WordPress es una tarea relativamente sencilla con las herramientas nativas de WordPress. Con solo alguna líneas de código podremos llevar a cabo esta tarea sin necesidad de instalar ningún plugin.

Woprdpress pode a nuestra disposición 2 filtros 

  • wp_nav_menu_args: Para sustituir menús de dinámicamente
  • wp_nav_menu_items: Para modificar elementos de un menú

En ambos casos con el parámetro "theme_location"  que se trata del menú a modificar y si procede hacemos los cambios necesarios

Finalmente si no queremostocar código encontraremos hay más de un plugin que realice estas tareas por nostros. Nos tocará decidir cual es la solución más eficaz para nuestro caso.


0 0 votes
Valoración del artículo
Suscribir
Notificar de
guest
0 Comentarios
Inline Feedbacks
View all comments