Añadir un menú a cualquier parte de WordPress con un shortcode

Hoy vamos a ver una forma muy simple de añadir un menú a cualquier parte de WordPress con un shortcode, lo cual nos puede sacar de más de un aprieto y nos abre mucho las posibilidades.

Para ello vamos a introducir el siguiente código ya sea en nuestro archivos de funciones del tema o en el plugin del proyecto.

function custom_menu_shortcode($atts){
    // Normalize 
    $atts = array_change_key_case((array)$atts, CASE_LOWER);
    $atts = array_map('sanitize_text_field', $atts);
    // Attributes
    $menu_name = $atts['name'];
    $menu_class = $atts['class'];
    return wp_nav_menu(array(
         'menu' => esc_attr($menu_name),
	 'menu_class' => 'menu ' . esc_attr($menu_class),
	 'echo' => false));
}
add_shortcode('print-menu', 'custom_menu_shortcode');

Como puedes ver el código es bastante sencillo, se trata de una función que recibe dos atributos, el nombre del menú y las clases que queramos introducirle. Si quieres más información sobre como se crea un shrotcode puedes verlo en mi entrada donde explico como se crean.

El siguiente paso es crear el menú que queremos mostrar desde nuestro panel de control de forma normal.

Y finalmente tenemos que usar el shortcode en nuestra plantilla o código de la siguiente forma:

Plantilla:

[print-menu name="nombre_del_menú" class="clase_con_la_que_nombramos_el_menú"]

Código:

<?php echo do_shortcode("[print-menu name='nombre_del_menú' class='clase_con_la_que_nombramos_el_menú']">);?>

De esta forma tan sencilla podemos añadir un menú a cualquier parte de WordPress con un shortcode, espero que como siempre os haya sido de utilidad y si es así que lo compartáis o me preguntéis las dudas.