Answer the question
In order to leave comments, you need to log in
How to set area (menu location) for wordpress menu programmatically, knowing its id and name?
В админ панеле можно выбрать любую доступную область отображения для меню, отметив соответствующий чекбокс.
Задача сделать то же самое, только программно в теме. Есть созданное меню при помощи функции wp_create_nav_menu. Соответственно в распоряжении есть name которое использовалось при создании и возвращенный этой функцией id этого меню. Подскажите как данное меню можно установить в нужную область отображения?
Answer the question
In order to leave comments, you need to log in
$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 questionAsk a Question
731 491 924 answers to any question