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
Використання не знайдено.