nav_menu_item_id
Позволяет изменить атрибут ID элемента <li> у пункта меню.
Чтобы удалить или изменить атрибут class у элемента меню, используйте фильтр nav_menu_css_class.
Код формирования атрибута ID для элемента <li> в движке:
$id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args, $depth ); $id = $id ? ' id="' . esc_attr( $id ) . '"' : '';
Это значит, что по умолчанию ID атрибут выглядит так: menu-item-{ID элемента пункта меню}. Но мы можем полностью изменить этот ID через этот фильтр. Если фильтр ничего не возвращает, то атрибут ID вообще не добавляется к элементу <li>.
Не забывайте, что ID атрибут тега должен быть уникальным на странице!
Использование
add_filter( 'nav_menu_item_id', 'wp_kama_nav_menu_item_id_filter', 10, 4 );
/**
* Function for `nav_menu_item_id` filter-hook.
*
* @param string $menu_item_id The ID attribute applied to the menu item's `<li>` element.
* @param WP_Post $menu_item The current menu item.
* @param stdClass $args An object of wp_nav_menu() arguments.
* @param int $depth Depth of menu item. Used for padding.
*
* @return string
*/
function wp_kama_nav_menu_item_id_filter( $menu_item_id, $menu_item, $args, $depth ){
// filter...
return $menu_item_id;
}
- $menu_id(строка)
- ID элемента <li> пункта меню.
- $item(WP_Post)
Объект текущего пункта меню. Пример:
- $args(stdClass)
Объект параметров из функции wp_nav_menu(). Пример:
- $depth(число)
Уровень пункта меню. Используется для отступов. Верхние пункты меню имеют $depth = 0, вложенные $depth = 1 и так далее.
Добавлен в версии 4.1.0.
Примеры
#1 Удалим атрибут ID у пункта(ов) меню
Удалить ID у всех пунктов меню на сайте:
add_filter( 'nav_menu_item_id', '__return_empty_string' );
Удалим id атрибут у всех пунктов меню, выводимых в области меню primary:
add_filter( 'nav_menu_item_id', 'change_menu_item_css_id', 10, 4 );
function change_menu_item_css_id( $menu_id, $item, $args, $depth ) {
return $args->theme_location === 'primary' ? '' : $menu_id;
}
Заметки
- C версии 4.1.0 был добавлен параметр $depth.
Список изменений
| С версии 3.0.1 | Введена. |
| С версии 4.1.0 | The $depth parameter was added. |
Где вызывается хук
$id = apply_filters( 'nav_menu_item_id', 'menu-item-' . $menu_item->ID, $menu_item, $args, $depth );
Где используется хук в WordPress
add_filter( 'nav_menu_item_id', '_nav_menu_item_id_use_once', 10, 2 );