Вызов заголовка меню внутри функции массива wp_nav_menu

7 янв. 2015 г., 12:21:01
Просмотры: 20.4K
Голосов: 6

Я уже некоторое время борюсь с этой задачей. Я хочу вызвать меню, но включить заголовок меню над списком меню. Базовый код, который у меня есть, выглядит следующим образом -

<?php wp_nav_menu( array(
'container'       => 'div',
'container_class' => 'rmm-footer',
'theme_location'  => 'resources'
));
?>

Это создает список следующим образом -

Пункт меню 1 Пункт меню 2 Пункт меню 3

Но я хочу, чтобы было так -

ЗАГОЛОВОК Пункт меню 1 Пункт меню 2 Пункт меню 3

Есть ли у кого-нибудь идеи?

Заранее спасибо.

1
Комментарии

Используйте wp_get_nav_menu_name() для получения названия меню: $name = wp_get_nav_menu_name( 'resources' ); (автор @merhawi-fissehaye, https://wordpress.stackexchange.com/a/323653/48203).

Philipp Bammes Philipp Bammes
3 февр. 2020 г. 11:38:33
Все ответы на вопрос 2
1

Вы не можете получить заголовок меню с помощью 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>'
             )
);
7 янв. 2015 г. 12:31:54
Комментарии

Если это сработало и ответило на ваш вопрос, пожалуйста, отметьте ответ как принятый.

cybmeta cybmeta
7 янв. 2015 г. 12:52:05
0

Лучше не полагаться на 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' на зарегистрированную локацию в вашей теме.

8 сент. 2017 г. 04:05:37