Данная функция wordpress отвечает за вывод меню. Рассмотрим параметры этой функции.
Вывод без дополнительных параметров:
<?php wp_nav_menu( array( 'theme_location' => 'top-menu' ) ); ?>
В этом случае классы меню и контейнера будут взяты из названия меню

<div class="menu-main-menu-container"><ul id="menu-main-menu" class="menu">
Все аргументы функции:
wp_nav_menu( [
'theme_location' => '',
'menu' => '',
'container' => 'div',
'container_class' => '',
'container_id' => '',
'menu_class' => 'menu',
'menu_id' => '',
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
'depth' => 0,
'walker' => '',
] );
Из того что может пригодится на практике — container_class. Можно задавать разные классы для разных стилей меню. Например горизонтальное меню: h_menu, вертикальное меню: v_menu.
Удалить из меню теги ul li
<?php $params = array(
'theme_location' => 'top-menu',
'menu_class' => 'menu h_menu',
'echo' => false,
// 'items_wrap' => '%3$s',
);
echo strip_tags(wp_nav_menu($params), array('<a>', '<div>')); ?>
Навигация по странице
Если мы добавляем пункты меню для навигации по странице то они будут реализованы в виде Произвольных ссылок с URL #offers. Но если сайт не одностраничный, то нужно к URL добавлять /#offers чтобы можно было попасть на этот блок из других страниц. Но у этого есть 2 негативных момента.
- Навигация по странице будет осуществляться не плавно а мгновенно.
- WordPress ссылки с / вначале будут расценены как current_menu_item и у первого пункта меню будет удален href и пункт не будет работать.
Поэтому в этом случае лучше создавать 2 версии меню: для главной страницы и для остальных страниц. Либо, как вариант, добавлять невидимые первый пункт меню, у которого будет удаляться href.
[site-socialshare]