Shortcode per inserire il menu nel corpo della pagina?

1 feb 2018, 20:18:13
Visualizzazioni: 45.6K
Voti: 4

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.

2
Commenti

No, WordPress non lo fa da solo. Sì, puoi creare una funzione per farlo.

janh janh
1 feb 2018 21:53:26

Ho appena modificato la mia domanda per inserire un codice

JPashs JPashs
2 feb 2018 10:07:43
Tutte le risposte alla domanda 2
0
12

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"]
2 feb 2018 20:47:27
0

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!

15 giu 2021 09:24:05