Добавление пользовательского HTML-кода в функцию wp_nav_menu
Я хочу добавить пользовательский HTML-код в функцию wp_nav_menu в WordPress, чтобы добавить модальное окно bootstrap к ссылке в навигационном меню, но не уверен, как это сделать. Пост https://stackoverflow.com/questions/12250866/how-to-add-custom-html-to-wp-nav-menu частично объясняет, как это сделать путем расширения класса walker.
Моя цель - создать следующую разметку с помощью класса walker для создания пользовательского HTML-кода в конце.
<div class="menu-primary-navigation-container">
<ul id="navigation" class="clearfix">
<li id="menu-item-275" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-273 current_page_item menu-item-275">
<a href="http://sandpit.jonathanbeech.co.uk/">Главная</a>
</li>
<li id="menu-item-17" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17">
<a href="http://sandpit.jonathanbeech.co.uk/about/">О нас</a>
</li>
<li id="menu-item-191" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-191">
<a href="http://sandpit.jonathanbeech.co.uk/portfolio-two/">Портфолио</a>
</li>
<li id="menu-item-269" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-269">
<a href="http://sandpit.jonathanbeech.co.uk/articles/">Статьи</a>
</li>
<li>
<a href="#myModal" role="button" data-toggle="modal">Контакты</a>
</li>
</ul>
</div>
У меня возникают трудности с тем, как изменить код start_el и end_el, чтобы получить код в последнем элементе списка, так как мои навыки PHP не очень хороши.
Есть предложения?
class Custom_Walker_Nav_Menu extends Walker_Nav_Menu {
function start_el ( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
// Скопируйте весь код start_el из источника и измените
}
function end_el( &$output, $item, $depth = 0, $args = array() ) {
// Скопируйте весь код end_el из источника и измените
}
}

Чтобы добавить последний пункт списка, вам не нужен пользовательский Walker. Существует хук, который позволит вам добавить его.
function add_last_nav_item($items) {
return $items .= '<li><a href="#myModal" role="button" data-toggle="modal">Контакты</a></li>';
}
add_filter('wp_nav_menu_items','add_last_nav_item');
Вам всё равно не нужно было бы редактировать start_el
и end_el
. Они генерируют отдельные пункты списка. Это не место для добавления нового элемента. Думаю, вам, вероятно, нужно было бы подняться к родительскому классу Walker
для Walker_Nav_Menu
, чтобы найти место, где можно добавить новые пункты, но не стоит тратить усилия только для добавления элементов.
