Функция HAS_NAV_MENU(): Определение наличия назначенного меню WP

# Функция HAS_NAV_MENU() │ WP 3.0.0

Эта функция позволяет определить, назначено ли меню в зарегистрированном месте для навигации (навигационном меню).

## Использует

get_nav_menu_locations()

## ХУКИ ОТ ФУНКЦИИ

has_nav_menu

## РЕЗУЛЬТАТ

Возвращает true или false: есть ли назначенное меню в указанном месте.

## ИСПОЛЬЗОВАНИЕ

```php
has_nav_menu( $location );

Аргументы

  • $location (строка, обязательный) — идентификатор места для меню.

ПРИМЕРЫ

Пример 1: Основное использование

if ( has_nav_menu( 'primary' ) ) {
    wp_nav_menu( [ 'theme_location' => 'primary' ] );
}

Пример 2: Отображение меню, если оно есть

Предположим, в вашей теме зарегистрировано несколько зон для меню.

Код в functions.php

add_action( 'after_setup_theme', function () {
    // Общие настройки темы
    // ...

    // Регистрация зон для меню
    register_nav_menus( array(
        'header-menu' => 'Область верхнего меню',
        'footer-menu' => 'Область нижнего меню',
    ) );
} );

Теперь давайте проверим, прикреплено ли меню к указанной области, и если да, то отобразим его:

Код в header.php

if( has_nav_menu( 'header-menu' ) ){
    wp_nav_menu( [ 'theme_location' => 'header-menu' ] );
}

Код в footer.php

if( has_nav_menu('footer-menu') ){
    wp_nav_menu( array( 'theme_location' => 'footer-menu' ) );
}

ИЗМЕНЕНИЯ В ВЕРСИЯХ

С версии 3.0.0 — впервые представлена.

КОД ФУНКЦИИ HAS_NAV_MENU() В WP 6.7.2

function has_nav_menu( $location ) {
    $has_nav_menu = false;

    $registered_nav_menus = get_registered_nav_menus();
    if ( isset( $registered_nav_menus[ $location ] ) ) {
        $locations    = get_nav_menu_locations();
        $has_nav_menu = ! empty( $locations[ $location ] );
    }

    /**
     * Фильтрует, назначено ли меню к указанному месту.
     *
     * @since 4.3.0
     *
     * @param bool   $has_nav_menu Есть ли меню, назначенное к месту.
     * @param string $location     Место для меню.
     */
    return apply_filters( 'has_nav_menu', $has_nav_menu, $location );
}

СВЯЗАННЫЕ ФУНКЦИИ

  • get_nav_menu_locations()
  • wp_nav_menu()
  • register_nav_menu()
  • register_nav_menus()

УСЛОВНЫЕ ТЭГИ

Функции, которые могут быть полезны в условных операциях:

  • is_front_page()
  • is_single()
  • is_page()
  • is_archive()
  • is_category()
  • is_tag()

Заметка

Не забывайте, что прежде чем использовать has_nav_menu(), необходимо зарегистрировать меню в вашей теме. Это позволит правильно обрабатывать все запросы к меню и отображать их в нужных местах на сайте.

Leave a Reply

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