S
S
Sergey Shvab2017-09-07 15:51:55
User navigation
Sergey Shvab, 2017-09-07 15:51:55

How to set area (menu location) for wordpress menu programmatically, knowing its id and name?

В админ панеле можно выбрать любую доступную область отображения для меню, отметив соответствующий чекбокс.
cb32e64148eb451cb0f40bb9d86d2253.jpg
Задача сделать то же самое, только программно в теме. Есть созданное меню при помощи функции wp_create_nav_menu. Соответственно в распоряжении есть name которое использовалось при создании и возвращенный этой функцией id этого меню. Подскажите как данное меню можно установить в нужную область отображения?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
D
Denis Yanchevsky, 2017-09-07
@SchwabDev

$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);
}

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question