Пользовательское меню создается с дефолтными страницами, но не привязывается к кастомной локации меню в теме
7 апр. 2011 г., 00:06:56
Просмотры: 1.65K
Голосов: 0
Скрипт ниже создает навигационное меню и добавляет в него страницу. Все работает отлично, за исключением того, что меню не привязывается автоматически к локации "Header-menu" в моей теме.
Есть идеи, почему так происходит?
//Регистрируем локации меню для темы
add_action( 'init', 'register_my_menus' );
function register_my_menus() {
register_nav_menus(
array('header-menu' => __( 'Header Menu' ), 'footer-menu' => __( 'Footer Menu' ))
);
}
//Создаем меню, добавляем страницу и пытаемся привязать к локации "header-menu"
$menu_id = wp_create_nav_menu( 'header-menu' );
$menu = array(
'menu-item-type' => 'custom',
'menu-item-url' => get_home_url('/'),
'menu-item-title' => 'Home',
'menu-item-status' => 'publish',
'theme_location' => 'header-menu', //Просто предположение, но не сработало!!!
);
wp_update_nav_menu_item( $menu_id, 0, $menu );

Scott B
5.7K
Все ответы на вопрос
1
2
Функция wp_create_nav_menu()
принимает название меню, а не расположение меню.
Что касается wp_update_menu_item()
, то она предназначена для элементов меню, а не для самого меню.
Покопавшись в коде, я выяснил, что "назначение" расположения меню ('theme location') в теме не выполняется с помощью API nav_menu в WordPress, а осуществляется через настройки темы:
// сначала получаем текущую тему
$theme = get_current_theme();
// получаем модификации темы
$mods = get_option("mods_$theme");
// обновляем модификации, добавляя ID меню для расположения в теме
$mods['nav_menu_locations']['header-menu'] = $menu_id;
update_option("mods_$theme", $mods);
Надеюсь, это поможет :)

Bainternet
67.7K
7 апр. 2011 г. 02:48:25
Комментарии
Ты просто суперзвезда. Неудивительно, что я не мог это найти. Если бы у меня была кнопка +20, я бы жал на нее изо всех сил.

7 апр. 2011 г. 03:56:00
Похожие вопросы
1
ответов