Adăugarea unui cod HTML personalizat la funcția wp_nav_menu

14 iul. 2013, 21:20:48
Vizualizări: 22.2K
Voturi: 5

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
    }
}
0
Toate răspunsurile la întrebare 1
0
11

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.

14 iul. 2013 21:32:18