Cuando realizamos la tarea de construir nuestro propio template en wordpress es inevitable pasar por alto el tener que añadir uno o varios menús, las siguientes lineas te pueden ayudar a conseguirlo:

Antes de mostrar el nuevo menú debemos registrarlo, para ello utilizaremos el action “init” y crearemos la función “template_softcreative_registro_menus” en nuestro function.php del template a modificar:

function template_softcreative_registro_menus() {
    register_nav_menus(
        array(
            'primary_menu' => __( 'Primary Menu', 'template_softcreative_registro_menus' ),
        )
    );
}
add_action( 'init', 'template_softcreative_registro_menus' );

Podemos registrar varios menú desde la misma función:

register_nav_menus(
        array(
            'primary_menu' => __( 'Primary Menu', 'template_softcreative_registro_menus' ),
            'aux_menu' => __( 'Footer Menu', 'template_softcreative_registro_menus' ),
        )
    );

Si entramos en el panel de administración de wordpress “Apariencia” > “Menús” podemos ver que el nuevo menú ya está disponible para añadirle algún item.

En nuestro index.php ya podemos mostrar el menú registrado anteriormente:

<?php wp_nav_menu( array( 'theme_location' => 'primary_menu' ) ); ?>

Ya estaríamos y obtendriamos algo como esto:

<div class="menu">
	<ul>
		<li>
			<a href="http://misito.com/servicios" title="Servicios">Servicios</a>
		</li>
		<li>
			<a href="http://mysite.com/about" title="About">About</a>
		</li>
	</ul>
</div>

A veces necesitamos adaptar lo que nos devuelve wordpress por defecto…

<nav>
	<ul>
	  <li><a href="default.asp">Home</a></li>
	  <li><a href="news.asp">News</a></li>
	  <li><a href="contact.asp">Contact</a></li>
	  <li><a href="about.asp">About</a></li>
	</ul> 
</nav>

La función wp_nav_menu de wordpress tiene multiples parámetros para modificar su salida y adaptarla a nuestros proyectos, el siguiente array muestra los parámetros por defectos:

$defaults = array(
	'theme_location'  => '',
	'menu'            => '',
	'container'       => 'div',
	'container_class' => '',
	'container_id'    => '',
	'menu_class'      => 'menu',
	'menu_id'         => 'menu-{menu slug}',
	'echo'            => true,
	'fallback_cb'     => 'wp_page_menu',
	'before'          => '',
	'after'           => '',
	'link_before'     => '',
	'link_after'      => '',
	'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>',
	'depth'           => 0,
	'walker'          => ''
);

wp_nav_menu( $defaults );

Parámetros de wp_nav_menu:

  • items_wrap: Formato del elemento theme_location: Nombre de menú que hemos dado de alta en la función “register_nav_menus” en este caso “primary_menu”
  • menu: Acepta, en este orden, id, slug o nombre del menú a mostrar.
  • container: Elemento que envuelve el menú. Admite div y nav, en caso de no querer envolverlo indicamos false.
  • container_class:Atributo class del elemento container (div,nav indicado anteriormente).
  • container_id: Atributo id del container (div,nav indicado anteriormente).
  • menu_class: Atributo class del elemento
    que envuelve al menú. Podemos indicar varios separados por espacios.
  • menu_id: Atributo id del elemento
    que envuelve al menú. Por defecto menu-{menu slug}.
  • echo: Guardar el menú en una variable. Por defecto: true
  • fallback_cb: Función llamada en caso que el menú no exista. Por defecto, wp_page_menu. false para no llamar a ninguna función.
  • before: Texto antes del elemento <a>.
  • after: Texto después del elemento <a> .
  • link_before: Texto antes del texto del enlace.
  • link_after: Texto después del texto del enlace.
  • items_wrap: Formato del elemento <ul> a través de la expresión sprintf. Ej.: %1$s = “menu_id”, %2$s = “menu_class”, y %3$s el valor de <li>
  • depth: Niveles de submenús, 0 muestra todos los niveles.
  • walker: Objeto walker a usar, por defecto: new Walker_Nav_Menu

Deja un comentario

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