web-dev-qa-db-fra.com

Shortcode pour insérer un menu dans le corps de la page?

Je dois insérer un menu dans le texte d'une page. J'ai trouvé ces deux plugins mais aucun d'entre eux ne fonctionne. Les deux n'ont pas été mis à jour depuis 6 ans:

https://wordpress.org/plugins/custom-menu/

https://wordpress.org/plugins/custom-menu-shortcode/

J'ai trouvé ce code pour créer mon propre 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');

Et puis shortcode devrait être:

[menu name="-your menu name-" class="-your class-"]

Cela fonctionne mais la classe n'est pas imprimée du tout. Quel est le problème dans la fonction? J'ai besoin d'imprimer la classe.

1
JPashs

Ce code devrait fonctionner. Êtes-vous usign "myclass" en tant que classe et non pas ".myclass"?

Est-ce pour un usage spécifique où la classe sera toujours la même? Si vous ne souhaitez l'utiliser que sur un seul site, vous pouvez le faire:

    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');

Puis changez la section 'menu_class' => 'myclass' avec la classe dont vous avez besoin. cela évitera d'avoir à utiliser la classe. Encore une fois, n'utilisez pas le "." devant la classe ici.

Utilisation du code court:

[menu name="menu_name"]
1
rudtek