Shortcode pentru inserarea meniului în corpul paginii?
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.
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"]

Ș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!
