Wordpress walker menu 101 - Как добавить класс к каждому элементу, как в цикле foreach - PullRequest
0 голосов
/ 14 июня 2019

Вот моя проблема:

Я хочу создать меню WordPress и дать классы каждому элементу меню, чтобы воссоздать хорошее меню, которое я жестко запрограммировал, но я не совсем уверен, понял ли я, как работает ходок.

По сути: это структура моего меню:

<ul class="desktop-menu">
    <li>
        <a class="menu-desktop-toplevel <?=($highlight == 'services') ? 'active' : ''; ?>" href="/services/">Services</a>
        <ul class="dropdown-menu-desktop services-dropdown">
            <li>
                <ul class="dropdown-menu-desktop-column-one content-column">
                    <li class="third-level-sub-menu-desktop">
                        <p class="dropdown-menu-desktop-subhead">Inbound+</p>
                        <div class="sub-menu-underline"></div>
                    </li>
                    <li class="third-level-sub-menu-desktop">
                        <a class="menu-third-level-links" href="/services/inbound-marketing/">Inbound Marketing</a>
                    </li>
                    <li class="third-level-sub-menu-desktop">
                        <a href="/services/content-strategy-development/">Content Strategy</a>
                    </li>
                </ul>
            </li>
            <li>
                <ul class="dropdown-menu-desktop-column-two content-column">
                    <li class="third-level-sub-menu-desktop">
                        <p class="dropdown-menu-desktop-subhead">Lead Gen</p>
                        <div class="sub-menu-underline"></div>
                    </li>
                    <li class="third-level-sub-menu-desktop">
                        <a href="/services/education-lead-generation/">Education Lead Generation</a>
                    </li>

                </ul>
            </li>
        </ul>
    </li>
</ul>

Теперь я работаю только с основной функцией для навигации WordPress, которая является довольно простой, но wp_nav_menu (), но я проиграл, когда читал навигацию по ходункам.

Моя цель довольно ясна: я просто хочу добавить класс к каждому элементу меню, как в цикле foreach, но я бы хотел сделать это внутри функции меню WordPress.

Это выполнимо? Может кто-нибудь предложить пример?

До сих пор я мог только настроить среду:

header.php

<?php
wp_nav_menu(array(
    'menu'    => 2, //menu id
    'walker'  => new Walker_Quickstart_Menu() //use our custom walker
));
?>

function.php

class Walker_Quickstart_Menu extends Walker {

    // Tell Walker where to inherit it's parent and id values
    var $db_fields = array(
        'parent' => 'menu_item_parent', 
        'id'     => 'db_id' 
    );

    /**
     * At the start of each element, output a <li> and <a> tag structure.
     * 
     * Note: Menu objects include url and title properties, so we will use those.
     */
    function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
        $output .= sprintf( "\n<li><a href='%s'%s>%s</a></li>\n",
            $item->url,
            ( $item->object_id === get_the_ID() ) ? ' class="current"' : '',
            $item->title
        );
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...