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 );