¿Shortcode para insertar menú en el cuerpo de la página?
Necesito insertar un menú en el texto de una página. Encontré estos dos plugins pero ninguno funciona. Ambos no han sido actualizados durante 6 años:
https://wordpress.org/plugins/custom-menu/
https://wordpress.org/plugins/custom-menu-shortcode/
Encontré este código para crear mi propio shortcode
function print_menu_shortcode($atts, $content = null) {
extract(shortcode_atts(array( 'name' => null, 'class' => null ), $atts));
return wp_nav_menu( array( 'menu' => $name, 'menu_class' => $class, 'echo' => false ) );
}
add_shortcode('menu', 'print_menu_shortcode');
Y entonces el shortcode debería ser:
[menu name="-nombre de tu menú-" class="-tu clase-"]
Funciona pero la clase no se imprime en absoluto. ¿Qué está mal en la función? Necesito imprimir la clase.
Ese código debería funcionar. ¿Estás usando "myclass" como la clase y no ".myclass"?
¿Es esto para un uso específico donde la clase siempre será la misma? Si solo planeas usar esto en un lugar, puedes hacer esto:
function print_menu_shortcode($atts, $content = null) {
extract(shortcode_atts(array( 'name' => null, 'class' => null ), $atts));
return wp_nav_menu( array( 'menu' => $name, 'menu_class' => 'myclass', 'echo' => false ) );
}
add_shortcode('menu', 'print_menu_shortcode');
Luego cambia la sección 'menu_class' => 'myclass' con la clase que necesites. Esto evitará tener que usar la clase. Nuevamente, no uses el "." delante de la clase aquí.
Uso del shortcode:
[menu name="nombre_del_menu"]

Sé que llego años tarde, pero por si alguien se encuentra con esto nuevamente, puedes usar este código para incluir una clase con tu shortcode y su valor de retorno. Lo modifiqué con las respuestas correspondientes anteriores que había aquí.
function print_menu_shortcode($atts=[], $content = null) {
$shortcode_atts = shortcode_atts([ 'name' => '', 'class' => '' ], $atts);
$name = $shortcode_atts['name'];
$class = $shortcode_atts['class'];
return wp_nav_menu( array( 'menu' => $name, 'menu_class' => $class, 'echo' => false ) );
}
Shortcode:
[menu name="nombre_del_menu" class="tu_clase"]
¡Espero que esto ayude a cualquiera que lo pueda necesitar en el futuro!
