nav_menu_item_args
Позволяет изменить параметры (аргументы) отдельного элемента меню навигации (wp_nav_menu).
Использование
add_filter( 'nav_menu_item_args', 'wp_kama_nav_menu_item_args_filter', 10, 3 ); /** * Function for `nav_menu_item_args` filter-hook. * * @param stdClass $args An object of wp_nav_menu() arguments. * @param WP_Post $menu_item Menu item data object. * @param int $depth Depth of menu item. Used for padding. * * @return stdClass */ function wp_kama_nav_menu_item_args_filter( $args, $menu_item, $depth ){ // filter... return $args; }
- $args(stdClass)
Объект с аргументами, передаваемыми в функцию wp_nav_menu().
Например:
- $item(WP_Post)
Объект с данными пункта меню. Например:
- $depth(число)
- Уровень пункта меню. Добавлен в версии 4.1.0. Используется для отступов. Верхние пункты меню имеют $depth = 0, вложенные в них $depth = 1 и так далее.
Примеры
#1 Добавление иконок к пунктам меню
Добавляет иконку к ссылкам меню, прикрепленное к области меню primary
:
function change_menu_item_args( $args ) { if ( $args->theme_location == 'primary' ) { $args->link_before = '<span class="dashicons dashicons-admin-links"></span>'; } return $args; } add_filter( 'nav_menu_item_args', 'change_menu_item_args' );
Добавляет иконку к ссылкам всех меню, где пункт меню - страница, остальные элементы выведутся как обычно (без иконки):
function change_menu_item_args( $args, $item ) { if ( $item->object == 'page' ) { $args->link_before = '<span class="dashicons dashicons-admin-links"></span>'; } return $args; } add_filter( 'nav_menu_item_args', 'change_menu_item_args', 10, 2 );
Добавляет иконку к ссылкам верхнего уровня во всех меню:
function change_menu_item_args( $args, $item, $depth ) { if ( $depth === 0 ) { $args->link_before = '<span class="dashicons dashicons-admin-links"></span>'; } return $args; } add_filter( 'nav_menu_item_args', 'change_menu_item_args', 10, 3 );
Добавляет иконки к ссылкам пунктов меню, которые удовлетворяют всем трём условиям:
function change_menu_item_args( $args, $item, $depth ) { if ( $args->theme_location == 'primary' && $item->object == 'page' && $depth === 0 ) { $args->link_before = '<span class="dashicons dashicons-admin-links"></span>'; } return $args; } add_filter( 'nav_menu_item_args', 'change_menu_item_args', 10, 3 );
Список изменений
С версии 4.4.0 | Введена. |
Где вызывается хук
nav_menu_item_args
wp-includes/class-walker-nav-menu.php 164
$args = apply_filters( 'nav_menu_item_args', $args, $menu_item, $depth );