scottb
  • 0
Гуру

Пользовательские элементы меню навигации по умолчанию имеют значение ‘menu-item-type’ => ‘custom’. Как сделать пункт меню «страница»?

  • 0

Я использую приведенный ниже код для создания пользовательских пунктов меню на лету. Он отлично работает, за исключением того, что все меню создаются как «Пользовательские». В приведенном ниже коде установка типа элемента меню на «страницу» не дает никакого эффекта.

        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, она отображается как «Страница», а не «Пользовательская». Что я могу сделать, чтобы установить тип меню «Страница»?

Share
  1. Я использовал фильтр nav_menu_css_class для изменения классов css. Это то, что вы хотели?

    • 0
  2. Есть фильтр:

    function wpse15368_update_menu_item_type( $args )
    {
        return $args['menu-item-type'] = 'page';
    }
    add_action( 'wp_update_nav_menu_item', 'wpse15368_update_menu_item_type' );
    
    • 0
  3. Возможно, это странно, `post_type’ — это ключевое слово, которое нужно использовать:

    'menu-item-object' => 'page',
    'menu-item-type' => 'post_type',
    'menu-item-object-id' => $post_id
    

    Это сделает пункт меню таким же, как вы создали его вручную.

    • 0

Оставить ответ

You must login to add an answer.