WP_MENU_ITEM_CLASSES_BY_CONTEXT() – Добавление классов к элементам меню в WordPress

## Функция _WP_MENU_ITEM_CLASSES_BY_CONTEXT()

Функция _wp_menu_item_classes_by_context() добавляет классы к элементам меню в зависимости от текущего контекста, если это необходимо. 

### Важная информация

- Это внутреняя функция, предназначенная для использования только в самом ядре WordPress.
- Не рекомендуется использовать эту функцию в вашем коде.

### Возврат значения

- null — функция ничего не возвращает.

### Использование

Чтобы использовать функцию, вы должны передать ей массив с элементами меню:

```php
_wp_menu_item_classes_by_context( $menu_items );

Параметры

  • $menu_items (array) — Обязательный. Массив объектов текущих элементов меню, к которым нужно добавить информацию о классах. Передается по ссылке.

Пример

Предположим, у вас есть массив элементов меню, у которых нет классов. Вы можете передать этот массив функции, которая добавит нужные классы.

// $menu_items - это массив объектов меню с пустым массивом классов
_wp_menu_item_classes_by_context( $menu_items );

Массив объектов меню ДО использования функции:

Array
(
    [0] => WP_Post Object
        (
            [ID] => 305
            [classes] => Array (
                [0] =>
            )
            ...
            [menu_order] => 1
            [post_type] => nav_menu_item
            ...
        )
)

Массив объектов меню ПОСЛЕ использования функции:

Array
(
    [0] => WP_Post Object
        (
            [ID] => 305
            [classes] => Array(
                [0] =>
                [1] => menu-item
                [2] => menu-item-type-post_type
                [3] => menu-item-object-page
            )
            ...
        )
)

Примечания

  • Глобальная переменная WP_Query ($wp_query) — объект запроса WordPress.
  • Глобальная переменная WP_Rewrite ($wp_rewrite) — компонент перезаписи WordPress.

Изменения

  • Функция была введена в версии 3.0.0.

Код функции

Вот код функции _wp_menu_item_classes_by_context():


function _wp_menu_item_classes_by_context( &$menu_items ) {
global $wp_query, $wp_rewrite;

$queried_object = $wp_query->get_queried_object();
$queried_object_id = (int) $wp_query->queried_object_id;

$active_object = '';
$active_ancestor_item_ids = array();
$active_parent_item_ids = array();
$active_parent_object_ids = array();
$possible_taxonomy_ancestors = array();
$possible_object_parents = array();
$home_page_id = (int) get_option( 'page_for_posts' );

// Основная логика функции здесь...

}

Заключение

Функция _wp_menu_item_classes_by_context() помогает динамически добавлять классы к элементам меню в зависимости от контекста, что делает меню более адаптивным к изменениям в содержимом сайта. Хотя эта функция является внутренней, понимание её работы может помочь вам лучше разбираться в том, как функционирует меню в WordPress.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *