wp nav menu: добавление атрибутов к пунктам меню

18 июн. 2013 г., 14:16:12
Просмотры: 23.1K
Голосов: 1

Я пытаюсь понять, возможно ли добавить атрибут к пункту меню wp nav menu.
Для демонстрации, этот PHP код:

<?php
    wp_nav_menu(array(
    'menu'  =>  'main',
    'container' => false
));
?>

выведет меню следующим образом:

<ul id="menu-main" class="menu">
<li id="menu-item-01" class="menu-item">Меню 01</li>
<li id="menu-item-02" class="menu-item">Меню 02</li>
<li id="menu-item-03" class="menu-item">Меню 03</li>
<li id="menu-item-04" class="menu-item">Меню 04</li>
</ul>

но мне бы хотелось получить что-то вроде этого:

<ul id="menu-main" class="menu">
<li id="menu-item-01" class="menu-item" data-hook="01">Меню 01</li>
<li id="menu-item-02" class="menu-item" data-hook="02">Меню 02</li>
<li id="menu-item-03" class="menu-item" data-hook="03">Меню 03</li>
<li id="menu-item-04" class="menu-item" data-hook="04">Меню 04</li>
</ul>

Возможно ли этого достичь? Атрибут не обязательно должен быть data-hook, я использую его просто для примера, нужно просто что-то, что я могу использовать как идентификатор.

0
Все ответы на вопрос 1
0

Вы можете использовать Custom Walker для добавления атрибутов к элементам меню.

По сути, вы добавляете параметр 'walker' в опции wp_nav_menu() и вызываете экземпляр расширенного класса:

wp_nav_menu(
    array (
        'menu'            => 'main-menu',
        'container'       => FALSE,
        'container_id'    => FALSE,
        'menu_class'      => '',
        'menu_id'         => FALSE,
        'depth'           => 1,
        'walker'          => new Description_Walker
    )
);

Класс Description_Walker расширяет Walker_Nav_Menu и изменяет функцию start_el( &$output, $item, $depth, $args ).

  1. Из Codex:
    http://codex.wordpress.org/Function_Reference/wp_nav_menu#Using_a_Custom_Walker_Function

  2. Я нашел этот туториал, он может быть вам полезен:
    http://www.kriesi.at/archives/improve-your-wordpress-navigation-menu-output

18 июн. 2013 г. 14:28:35