Crear multiples menus para WordPress

Podemos añadir cuantos menús queramos en un WordPress. Un ejemplo en el que tuve que utilizar esta opción se encuentra en la web Inn-Progress | Fcforum que hace de contenedor para tres proyectos diferentes. El tamaño de las webs para cada proyecto era bastante reducido, así que opté por no instalar un WordPress para cada uno, evitando así saturar el servidor y disminuir el trabajo para futuras actualizaciones etc. Pero necesitaba tener un menú diferente para cada proyecto. Ahí vamos.
En este caso tuve que crear 4 menús: Uno para la Home (el contenedor) y uno para cada proyecto.
En esta imagen se puede ver el resultado final tal como aparece en el panel de admin Apariencia => Menus

Lo primero que tendremos que hacer es editar nuestro archivo functions.php, que está en la carpeta raíz de nuestro tema activo (o crear otro si estamos usando un child theme) y añadiremos lo siguiente

//Add custom menu location function
function register_my_menus() {
  register_nav_menus(
    array(
'menu-home' => __( 'Menu Home' ),
'menu-uoc' => __( 'Menu Uoc' ), 
'menu-beca' => __( 'Menu Beca' ), 
'menu-macba' => __( 'Menu Macba' ) 
)  );
}
add_action( 'init', 'register_my_menus' );

A este punto tendremos en nuestra pantalla de menús lo siguiente

Tenemos que crear los menús desde este panel, clickando en el icono “+” y asignando un nombre para cada menu (no olvides “Save Menu”)

Ahora en la columna izquierda “Theme Locations” nos aparecerán en el desplegable, las opciones de los menus que acabamos de crear. Asignaremos una a cada menú soportado y le damos a guardar.

Ahora sólo nos queda hacer la llamada desde los archivos .php, para poder mostrar en cada página el menú que deseamos.
La sintaxis para activar estos menús es la siguiente, donde ‘menu-home’ , ‘menu-uoc’ etc tiene que coincidir con el nombre que hemos asignado al menú en el archivo functions.php

<?php wp_nav_menu( array( 'theme_location' => 'menu-home' ) ); ?>
<?php wp_nav_menu( array( 'theme_location' => 'menu-uoc' ) ); ?>
<?php wp_nav_menu( array( 'theme_location' => 'menu-beca' ) ); ?>
<?php wp_nav_menu( array( 'theme_location' => 'menu-macba' ) ); ?>

En mi caso cree un header.php diferente para cada proyecto, pero se podría programar lo mismo con if statement.

<?php if(is_home()) 
wp_nav_menu( array( 'theme_location' => 'menu-home' ) ); 
else		
 wp_nav_menu( array( 'theme_location' => 'menu-uoc' ) ); 
?>

Deja un comentario