Adăugarea unui cod HTML personalizat la funcția wp_nav_menu
Aș dori să implementez un cod HTML personalizat în funcția wp_nav_menu din WordPress astfel încât să pot adăuga o fereastră modală bootstrap într-un link din meniul de navigare, dar nu sunt sigur cum să procedez. Postarea https://stackoverflow.com/questions/12250866/how-to-add-custom-html-to-wp-nav-menu explică parțial cum să faci acest lucru prin extinderea clasei walker.
Scopul meu este să creez următorul markup folosind ajutorul clasei walker pentru a genera codul HTML personalizat la final.
<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/">Acasă</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/">Despre</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/">Portofoliu</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/">Articole</a>
</li>
<li>
<a href="#myModal" role="button" data-toggle="modal">Contact</a>
</li>
</ul>
</div>
Am dificultăți în a înțelege cum să modific codul start_el și end_el pentru a obține codul din ultimul element al listei, deoarece abilitățile mele PHP nu sunt foarte bune.
Aveți sugestii?
class Custom_Walker_Nav_Menu extends Walker_Nav_Menu {
function start_el ( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
// Copiază tot codul start_el din sursă și modifică-l
}
function end_el( &$output, $item, $depth = 0, $args = array() ) {
// Copiază tot codul end_el din sursă și modifică-l
}
}

Pentru a adăuga acel ultim element din listă, nu ai nevoie de un Walker personalizat. Există un hook care îți va permite să adaugi acel element.
function add_last_nav_item($items) {
return $items .= '<li><a href="#myModal" role="button" data-toggle="modal">Contact</a></li>';
}
add_filter('wp_nav_menu_items','add_last_nav_item');
În orice caz, nu ar fi start_el
și end_el
ceea ce ar trebui să modifici. Acestea generează elementele individuale din listă. Nu este locul potrivit pentru a adăuga un alt element. Cred că ar fi necesar să mergi la clasa părinte Walker
a Walker_Nav_Menu
pentru a ajunge într-un loc unde poți adăuga elemente noi, dar nu merită efortul doar pentru a adăuga elemente.
