Можно ли добавить страницы в пользовательское меню через скрипт?

26 мар. 2011 г., 23:12:59
Просмотры: 330
Голосов: 1

В моей теме есть пользовательское меню...

function my_register_my_menus() {
  register_nav_menus(
    array('header-menu' => __( 'Пользовательское меню в шапке' ) )
  );
}

...и я создаю плагин-установщик, который при активации должен подключиться к этому меню и добавить в него страницы, как если бы они были добавлены вручную.

Однако API меню довольно новый, и до сих пор я не смог найти примеров того, как это сделать.

Надеюсь, кто-нибудь здесь сможет дать мне направление, примеры или информацию о том, как это реализовать.

Заранее спасибо :-)

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

Вы можете использовать хук wp_nav_menu_{$menu->slug}_items и добавить свою ссылку с помощью callback-функции. Например, если slug вашего меню header-menu, то код будет выглядеть примерно так:

add_filter('wp_nav_menu_header-menu_items', 'add_my_extra_links',10,2);
function add_my_extra_links($items, $args) {
  $newitems = '<li><a title="Тестовая ссылка" href="http://google.com">Google</a></li>';
  $newitems .= '<li><a title="Тестовая ссылка" href="http://yahoo.com">Yahoo</a></li>';
  $newitems .= '<li><a title="Тестовая ссылка" href="http://bing.com">Bing</a></li>';
  $newitems .= $items;
  return $newitems;
}

Обновление

Полагаю, вам потребуется вызвать функцию wp_save_nav_menu_items, которая используется для сохранения пунктов меню в базу данных.

27 мар. 2011 г. 00:09:17
Комментарии

Не могу выразить, как я рад видеть хоть какие-то признаки жизни в этом вопросе. Однако, поскольку это фильтр, я не уверен, что это то, что мне нужно. Мне необходимо создать меню через скрипт один раз, во время активации плагина, чтобы оно было таким же, как если бы я создал его вручную на сайте, и оно сохранялось без необходимости в runtime фильтре. Понимаете, что я имею в виду?

Scott B Scott B
27 мар. 2011 г. 00:44:19

Я обновил свой вопрос, чтобы немного прояснить ситуацию. Вижу, что было не совсем ясно, что всё это должно выполняться при активации плагина (один раз и готово).

Scott B Scott B
27 мар. 2011 г. 00:52:40

@Scott: я кратко обновил свой ответ, потому что здесь уже очень поздно, и я почти сплю, но это должно вам помочь.

Bainternet Bainternet
27 мар. 2011 г. 01:15:21

+1 за вашу помощь. Вы дали мне на 100% больше, чем у меня было до вашего ответа :-)

Scott B Scott B
27 мар. 2011 г. 02:25:29