walker_nav_menu_start_el
Дозволяє змінити вихід початкового елемента пункту меню.
Початковий елемент пункту меню за умовчанням формується так (код із ядра):
$item_output = $args->before; $item_output .= '<a'. $attributes .'>'; $item_output .= $args->link_before . $title . $args->link_after; $item_output .= '</a>'; $item_output .= $args->after;
Тобто фільтр пропускає через себе сформований html код посилання пункту меню із включеним до нього значеннями параметрів before
, link_before
, link_after
та after
.
В даний час немає фільтра для зміни <li> і </li> елемент меню, щоб це зробити доводиться писати свій аналог класу Walker_Nav_Menu .
Використання
add_filter( 'walker_nav_menu_start_el', 'wp_kama_walker_nav_menu_start_el_filter', 10, 4); /** * Function for `walker_nav_menu_start_el` filter-hook. * * @param string $item_output У menu item's starting HTML output. * @param WP_Post $menu_item Menu item data object. * @param int $depth Відомості про меню. Використовується для padding. * @param stdClass $args An object of wp_nav_menu() arguments. * * @return string */ function wp_kama_walker_nav_menu_start_el_filter( $item_output, $menu_item, $depth, $args ){ // Filter... return $item_output; }
-
$item_output
(рядок) -
HTML код початкового елемента пункту меню (
<a>…</a> ). -
$item
(WP_Post) Об’єкт поточного меню. Приклад:
-
$depth
(число) - Рівень пункту меню. Використовується для відступів. Верхні пункти меню мають $depth = 0, вкладені у яких $depth = 1 тощо. Доданий до версії 4.1.0.
-
$args
(stdClass) Об’єкт з параметрами функції wp_nav_menu() . Приклад:
Приклади
#1 Обернемо посилання в контейнер div
add_filter( 'walker_nav_menu_start_el', 'filter_walker_nav_menu_start_el', 10, 4); function filter_walker_nav_menu_start_el( $item_output, $item, $depth, $args ) { return '<div class="wrap-link">' . $item_output . '</div>'; }
Нехай меню зі структурою:
- Овочі
- Моя стаття
- Ще стаття
І має html код:
<div class="menu-vtoroe-menyu-container"> <ul id="menu-vtoroe-menyu" class="menu"> <li id="menu-item-317" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-317"> <a href="http://wp-test.ru/category/ovoshhi">Овочі</a> </li> <li id="menu-item-322" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-has-children menu-item-322"> <a href="http://wp-test.ru/moya-statya">Моя стаття</a> <ul class="sub-menu"> <li id="menu-item-321" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-321"> <a href="http://wp-test.ru/eshhyo-statya">Ще стаття</a> </li> </ul> </li> </ul> </div>
Тоді при застосуванні фільтра з прикладу html код стане:
<div class="menu-vtoroe-menyu-container"> <ul id="menu-vtoroe-menyu" class="menu"> <li id="menu-item-317" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-317"> <div class="wrap-link"> <a href="http://wp-test.ru/category/ovoshhi">Овочі</a> </div> </li> <li id="menu-item-322" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-has-children menu-item-322"> <div class="wrap-link"> <a href="http://wp-test.ru/moya-statya">Моя стаття</a> </div> <ul class="sub-menu"> <li id="menu-item-321" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-321"> <div class="wrap-link"> <a href="http://wp-test.ru/eshhyo-statya">Ще стаття</a> </div> </li> </ul> </li> </ul> </div>
список змін
З версії 3.0.0 | Введено. |
Де викликається хук
Де використовується хук у WordPress
Використання не знайдено.