Вызов заголовка меню внутри функции массива wp_nav_menu
Я уже некоторое время борюсь с этой задачей. Я хочу вызвать меню, но включить заголовок меню над списком меню. Базовый код, который у меня есть, выглядит следующим образом -
<?php wp_nav_menu( array(
'container' => 'div',
'container_class' => 'rmm-footer',
'theme_location' => 'resources'
));
?>
Это создает список следующим образом -
Пункт меню 1 Пункт меню 2 Пункт меню 3
Но я хочу, чтобы было так -
ЗАГОЛОВОК Пункт меню 1 Пункт меню 2 Пункт меню 3
Есть ли у кого-нибудь идеи?
Заранее спасибо.

Вы не можете получить заголовок меню с помощью wp_nav_menu()
, вам нужно получить объект меню следующим образом:
//Замените на ID вашего меню
$menu_ID = 5;
$nav_menu = wp_get_nav_menu_object( $menu_ID );
// затем выводим название меню
echo $nav_menu->name;
С помощью приведённого выше кода вы можете вставить название меню в wp_nav_menu()
, используя параметр items_wrap
. Например:
$menu_ID = 5;
$nav_menu = wp_get_nav_menu_object( $menu_ID );
wp_nav_menu( array(
'theme_location' => 'resources',
'container' => 'div',
'container_class' => 'rmm-footer',
'items_wrap' => '<ul><li id="item-id">'.$nav_menu->name.'</li>%3$s</ul>'
)
);

Лучше не полагаться на ID меню. Мое решение будет динамически определять привязанное меню для текущей локации.
1- Сначала нам нужно определить функцию для поиска меню в нашем functions.php:
function monoprog_get_menu_by_location($location) {
if(empty($location)) return false;
$locations = get_nav_menu_locations();
if(!isset($locations[$location])) return false;
return get_term( $locations[$location], 'nav_menu' );
}
2- Затем давайте отобразим заголовок меню, которое выводится в любом месте, которое мы хотим:
$menu_obj = monoprog_get_menu_by_location('menufooterleft');
echo "<h3>".esc_html($menu_obj->name)."</h3>";
Просто замените 'menufooterleft' на зарегистрированную локацию в вашей теме.
