wp nav menu: добавление атрибутов к пунктам меню
Я пытаюсь понять, возможно ли добавить атрибут к пункту меню 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
, я использую его просто для примера, нужно просто что-то, что я могу использовать как идентификатор.
Вы можете использовать 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 )
.
Из Codex:
http://codex.wordpress.org/Function_Reference/wp_nav_menu#Using_a_Custom_Walker_FunctionЯ нашел этот туториал, он может быть вам полезен:
http://www.kriesi.at/archives/improve-your-wordpress-navigation-menu-output
