Я использую приведенный ниже код для создания пользовательских пунктов меню на лету. Он отлично работает, за исключением того, что все меню создаются как «Пользовательские». В приведенном ниже коде установка типа элемента меню на «страницу» не дает никакого эффекта.
foreach($thePages as $page){
wp_update_nav_menu_item($menu->term_id, 0, array(
'menu-item-title' => $page->post_title,
'menu-item-type' => 'page',
'menu-item-status' => 'publish')
);
}
wp-includes/nav-menu.php показывает, что значение жестко закодировано как «Пользовательский». Однако, если я вручную добавляю страницу в меню с помощью диспетчера меню WP, она отображается как «Страница», а не «Пользовательская». Что я могу сделать, чтобы установить тип меню «Страница»?
Я использовал фильтр nav_menu_css_class для изменения классов css. Это то, что вы хотели?
@Wild Phoenix: я создаю пользовательское меню на лету, затем перебираю страницы верхнего уровня и назначаю каждую из них пользовательскому меню. Все это делается через плагин во время его активации. На данный момент это вообще не связано с css. Я просто пытаюсь понять, как зарегистрировать каждое меню как «Страница», а не как «Пользовательский» в моем коде выше.
попробуйте установить
menu-item-object-id
в своем массиве идентификатор страницы@baininternet: Подойдет. Спасибо за помощь и предложение.
@bainternet: это не сработало. По-прежнему отображается как «Пользовательский». ‘menu-item-object-id’ => $page->ID
Как указывает @lulalala ниже,
post_type
это действительно ключевое слово для использования. У @lulalala есть правильный ответ.Это должно быть помечено как правильный ответ, спасибо, что поделились.
Есть фильтр:
Возможно, это странно, `post_type’ — это ключевое слово, которое нужно использовать:
Это сделает пункт меню таким же, как вы создали его вручную.