Shortcode pentru inserarea meniului în corpul paginii?

1 feb. 2018, 20:18:13
Vizualizări: 45.6K
Voturi: 4

Am nevoie să inserez un meniu în textul unei pagini. Am găsit aceste două plugin-uri dar niciunul nu funcționează. Ambele nu au fost actualizate de 6 ani:

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

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

Am găsit acest cod pentru a-mi crea propriul 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');

Iar apoi shortcode-ul ar trebui să fie:

[menu name="-numele meniului tău-" class="-clasa ta-"]

Funcționează dar clasa nu este afișată deloc. Ce este greșit în funcție? Am nevoie să afișez clasa.

2
Comentarii

Nu, WordPress nu face asta automat. Da, poți crea o funcție pentru a realiza acest lucru.

janh janh
1 feb. 2018 21:53:26

Tocmai am editat întrebarea mea pentru a insera un cod

JPashs JPashs
2 feb. 2018 10:07:43
Toate răspunsurile la întrebare 2
0
12

Codul acela ar trebui să funcționeze. Folosești "myclass" ca și clasă și nu ".myclass"?

Este acest lucru pentru un caz specific în care clasa va fi întotdeauna aceeași? Dacă intenționezi să folosești asta doar într-un singur loc, poți face asta:

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

Apoi modifică secțiunea 'menu_class' => 'myclass' cu clasa de care ai nevoie. Asta va evita necesitatea de a folosi clasa. Din nou, nu folosi "." în fața clasei aici.

Utilizarea shortcode-ului:

[menu name="menu_name"]
2 feb. 2018 20:47:27
0

Știu că au trecut ani de atunci, dar în caz că cineva mai întâlnește această problemă, puteți folosi acest cod pentru a include o clasă în shortcode și valoarea returnată. L-am modificat conform răspunsurilor anterioare de aici.

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="menu_name" class="your_class"]

Sper că acest lucru va ajuta pe oricine ar putea avea nevoie de el în viitor!

15 iun. 2021 09:24:05