has_nav_menu() — проверяет, добавлено ли меню в указанную область темы

Опишу суть функции при помощи скриншотов, итак, функция возвращает true, если:

меню добавлено в область темы

false в том случае, если:

в область темы не добавлено меню

Кстати, на скриншотах «Primary Navigation» — это именно название области, а в аргументе нужно передавать её ярлык, предположим ярлык будет primary.

has_nav_menu( $location )

$location
(строка) (обязательное) — область темы, области задаются через функцию register_nav_menu() — там можно и узнать все ярлыки областей, чуть более подробно тут.

Примеры использования

Самый банальный такой пример — если меню в указанной области существует — выводим его:

if ( has_nav_menu( 'top_menu' ) ){
	wp_nav_menu( array( 'theme_location' => 'top_menu' );
}

Во многих старых темах ещё не было фишек с менюхами, поэтому они выводились в виде обычного списка рубрик и страниц.

То есть в данном случае если меню не добавлено в область, то будет выводиться список категорий через wp_list_categories().

if ( has_nav_menu( 'top_menu' ) ){
	wp_nav_menu( array( 'theme_location' => 'top_menu' );
} else {
	wp_list_categories('title_li=');
}
Миша Рудрастых Разработчик WordPress WooCommerce

Миша Рудрастых

Впервые познакомился с WordPress в 2009 году, и после двух лет мучений с Joomla и самописными движками это был просто бальзам на душу. С 2014 года меня можно встретить на WordCamp — официальной конфе по WP в Москве, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills в Питере.