Шорткод для вставки меню в тело страницы?
Мне нужно вставить меню в текст одной страницы. Я нашел эти два плагина, но ни один из них не работает. Оба не обновлялись 6 лет:
https://wordpress.org/plugins/custom-menu/
https://wordpress.org/plugins/custom-menu-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');
И тогда шорткод должен быть:
[menu name="-название вашего меню-" class="-ваш класс-"]
Это работает, но класс совсем не выводится. Что не так в функции? Мне нужно вывести класс.
Этот код должен работать. Вы используете "myclass" как класс, а не ".myclass"?
Это для конкретного случая, когда класс всегда будет одинаковым? Если вам нужно использовать это только в одном месте, вы можете сделать так:
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');
Затем замените раздел 'menu_class' => 'myclass' на нужный вам класс. Это позволит избежать необходимости указывать класс. И снова, не используйте "." перед классом здесь.
Использование шорткода:
[menu name="menu_name"]

Я знаю, что это спустя годы, но на случай, если кто-то снова столкнётся с этой проблемой, вы можете использовать этот код, чтобы добавить класс к вашему шорткоду и его возвращаемому значению. Я модифицировал его, учитывая предыдущие ответы в этой теме.
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 ) );
}
Шорткод:
[menu name="menu_name" class="your_class"]
Надеюсь, это поможет тем, кому может понадобиться в будущем!
