Можно ли добавить страницы в пользовательское меню через скрипт?
В моей теме есть пользовательское меню...
function my_register_my_menus() {
register_nav_menus(
array('header-menu' => __( 'Пользовательское меню в шапке' ) )
);
}
...и я создаю плагин-установщик, который при активации должен подключиться к этому меню и добавить в него страницы, как если бы они были добавлены вручную.
Однако API меню довольно новый, и до сих пор я не смог найти примеров того, как это сделать.
Надеюсь, кто-нибудь здесь сможет дать мне направление, примеры или информацию о том, как это реализовать.
Заранее спасибо :-)

Вы можете использовать хук 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, которая используется для сохранения пунктов меню в базу данных.

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

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

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