Как назначить пользовательское меню WP 3.0 в расположение навигационного меню темы через скрипт?

5 апр. 2011 г., 17:08:19
Просмотры: 442
Голосов: 2

Я использую этот скрипт внутри плагина для создания нового пользовательского меню на лету и добавления страницы в него...

$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' );
wp_update_nav_menu_item( $menu_id, 0, $menu );

И это прекрасно работает. Однако, я застрял на том, как привязать это меню к одному из "Расположений меню" моей темы. Поскольку я регистрирую расположение навигации под названием "header-menu" в functions.php моей темы, я думал, что код выше, вызывающий wp_create_nav_menu('header-menu'), автоматически привяжет мое пользовательское меню к месту, определенному в теме как "header-menu", но это не так.

Например, моя тема регистрирует два места для меню...

register_nav_menus(
  array('header-menu' => __( 'Мое меню в шапке' ), 
 'footer-menu' => __( 'Меню в подвале' ))
);

Как я могу привязать "Header Menu", которое я создал с помощью wp_create_nav_menu('Header Menu'), к расположению "Мое меню в шапке", которое я зарегистрировал в своей теме? Я уверен, что ответ где-то в nav-menu.php, но я не могу его найти.

То есть, я могу сделать это вручную из менеджера WordPress "Внешний вид > Меню" и в разделе "Расположения в теме > Главное навигационное меню" выбрать "Header Menu" и нажать "Сохранить". Я пытаюсь сделать это через скрипт.

0
Все ответы на вопрос 1
0

Если вы уже нашли решение, которое хорошо работает для вас, я рекомендую опубликовать его здесь для других. Если нет, то я бы предложил использовать пользовательский фильтр или действие.

Там, где меню выводится в теме, используйте либо apply_filters, либо do_action для триггера необходимого переопределения, а в вашем плагине подключитесь к этому действию/фильтру для вывода переопределения. Это более безопасный способ достижения той же цели, так как вы не перезаписываете ассоциацию меню.

13 февр. 2012 г. 09:01:01