SchwabDev
@SchwabDev
Веб-разработчик

Как установить область (menu location) для меню wordpress программно, зная его id и name?

В админ панеле можно выбрать любую доступную область отображения для меню, отметив соответствующий чекбокс.
cb32e64148eb451cb0f40bb9d86d2253.jpg
Задача сделать то же самое, только программно в теме. Есть созданное меню при помощи функции wp_create_nav_menu. Соответственно в распоряжении есть name которое использовалось при создании и возвращенный этой функцией id этого меню. Подскажите как данное меню можно установить в нужную область отображения?
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
$locations = get_theme_mod( 'nav_menu_locations' );

if(!empty($locations))
{
    foreach($locations as $locationId => $menuValue)
    {
        switch($locationId)
        {
            case 'admin-menu-location':
                $menu = get_term_by('name', 'Admin Menu', 'nav_menu');
            break;

            case 'author-menu-location':
                $menu = get_term_by('name', 'Author Menu', 'nav_menu');
            break;

            case 'subscriber-menu-location':
                $menu = get_term_by('name', 'Default Menu', 'nav_menu');
            break;
        }

        if(isset($menu))
        {
            $locations[$locationId] = $menu->term_id;
        }
    }

    set_theme_mod('nav_menu_locations', $locations);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы