Shortcode per inserire il menu nel corpo della pagina?
Ho bisogno di inserire un menu nel testo di una pagina. Ho trovato questi due plugin ma nessuno di essi funziona. Entrambi non sono stati aggiornati da 6 anni:
https://wordpress.org/plugins/custom-menu/
https://wordpress.org/plugins/custom-menu-shortcode/
Ho trovato questo codice per creare il mio shortcode personalizzato
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');
E poi lo shortcode dovrebbe essere:
[menu name="-nome del tuo menu-" class="-tua classe-"]
Funziona ma la classe non viene stampata affatto. Cosa c'è di sbagliato nella funzione? Ho bisogno di stampare la classe.
Quel codice dovrebbe funzionare. Stai usando "myclass" come classe e non ".myclass"?
È per un uso specifico dove la classe sarà sempre la stessa? Se devi usarlo solo in un posto, puoi fare così:
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');
Poi modifica la sezione 'menu_class' => 'myclass' con la classe che ti serve. Questo eviterà di dover usare la classe. Ricorda, non usare il "." davanti alla classe qui.
Utilizzo dello shortcode:
[menu name="nome_menu"]

So che sono passati anni, ma nel caso qualcuno si imbattesse nuovamente in questo problema, puoi utilizzare questo codice per includere una classe con il tuo shortcode e il suo valore di ritorno. L'ho modificato con le risposte corrispondenti presenti qui prima.
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="nome_menu" class="tua_classe"]
Spero che questo possa aiutare chiunque ne abbia bisogno in futuro!
