как создать меню со всеми sub категориями?

Действительно ли возможно создать меню с категорией, таким образом, что каждый раз, когда у меня была sub категория, которые автоматически отображаются в меню?

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

6
07.05.2013, 17:27
5 ответов

Это зависит от того, о каком меню Вы говорите:

1)

Если Вы говорите о "пользовательских меню" (найденный в Бэкенде при Дизайне-> Меню), можно сделать следующее:

  • Создайте новую функцию с рычагом действия add_category

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

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

  • необходимо также сцепиться в, удаляют категорию, для хранения меню актуальным

2)

Вы могли сделать намного легче без меню Wordpress:

  • просто запишите функцию для списка категорий (или использовать предопределенный wp_list_categories функция)
  • если это не достаточная запись специализированная который (возможно,
    рекурсивно), читает Ваши категории из базы данных

Чтобы опция 1 кодировала Вас, требуют некоторого знания о WordPress все же.

3
19.02.2020, 22:04

Я предпочитаю использовать wp_list_categories. Вот мой код, который я использовал в своем последнем проекте:

<?php wp_list_categories('orderby=ID&exclude=3,10,1,16,38&title_li=<span class="sidebar_heading d_shadow">' . __('Categories') . '</span>'); ?>

Вы получите список всех своих категорий и подкатегорий.

2
19.02.2020, 22:04

Другая альтернатива должна была бы использовать Список Пользовательский Виджет Таксономии, это могло бы работать в Вашем варианте использования (если Вы не планируете использовать WP nav_menu).

1
19.02.2020, 22:04

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

Идея для плагина:

1.in код, я использовал "created_ $taxonomy" рычаг действия.

2.collect весь пункт меню (при помощи wp_get_nav_menu_items)

3.and помещенное условие, если родитель публикует категорию, находится в пункте меню, чем пункт меню, созданный как подменю, он - родительская категория. (при помощи wp_update_nav_menu_item)

<?php
/*
Plugin Name: Auto Category Submenu
Plugin URI: 
Description: Create menu item when category publish/create if it's parent category in menu item.
Version: 0.1
Author: Mayank Gupta/Ravinder Kumar
Author URI: 
License: GPL2
*/

class AutoSubmenu {

    /**
     * Constructor
     */
    function __construct() {
        add_action( 'created_category', array( &$this, 'on_publish_cat' ) );
    }

    /**
     * When publishing a new child page, add it to the appropriate custom menu.
     */
    function on_publish_cat( $cat_id ) {
        $cat = get_category( $cat_id );

        //menu id for you menus in which your sub-category's parent category as menu item 
        $menu_ids = array(101,100);

        //retrieve all meu items from menu
        foreach($menu_ids as $menu_id){
            $menu_items[] = wp_get_nav_menu_items( $menu_id, array('post_status' => 'publish','post_type' => 'nav_menu_item','output' => ARRAY_A, ) );
        }
        foreach($menu_items as $menu_item){
            $counter = 0 ;
            echo'<!--';
            print_r($menu_item);
            echo'-->';
            foreach($menu_item as $menu_term){
                $menu_terms_id[] = $menu_term->object_id; //all menu items id
            }
        }
        //print_r($menu_terms_id); //test for items in menu
        foreach( $menu_terms_id as $menu_term ){
            if( $cat->category_parent == $menu_term){
                wp_update_nav_menu_item( $cat_id, 0, array(
                'menu-item-object-id' => $cat_id,
                'menu-item-object' => $cat->taxonomy,
                'menu-item-parent-id' => $menu_term,
                'menu-item-type' => 'category',
                'menu-item-status' => 'publish'
            ) );
            }else{
                return;
            }
        }
    }

}
$auto_submenu = new AutoSubmenu();

Примечание: ошибка предоставления плагина (заголовок, уже отправленный) и пункт меню, не созданный, когда категория публикуют. Это может быть другой темой для проблемы, но я поместил ее здесь, потому что это может быть решением, если некоторые предлагают меня, где я неправ. Извините, если я делаю что-то не так путем помещения его здесь

1
19.02.2020, 22:04

Я кодировал свое собственное для одного моих из клиентов

<div class="menu">
  <ul id="MenuBar1" class="MenuBarHorizontal">
    <li><a <?PHP if( count($_GET) == 0 ){ echo 'class="-current"';} ?> href="<?php echo esc_url( home_url( '/' ) ); ?>">home</a></li>
    <?php
        $category_ids = get_all_category_ids();
        sort($category_ids);
        foreach($category_ids as $cat_id) {
            $cat_name = get_cat_name($cat_id);

            echo '<li><a href="' . get_category_link( $cat_id ) . '">' . $cat_name . '</a>';            
            $args = array( 'numberposts' => -1, 'offset'=> 0, 'cat' => $cat_id, 'orderby' => 'ID', 'order' => 'ASCE' );     

            echo '<ul>';

            /* The 2nd Query (without global var) */
            $query2 = new WP_Query( $args );
            // The 2nd Loop
            while( $query2->have_posts() ):
                $query2->next_post();
                echo '<li><a href="' . get_permalink( $query2->post->ID ) . '">' . get_the_title( $query2->post->ID ) . '</a></li>';
            endwhile;

            // Restore original Query & Post Data
            wp_reset_query();
            wp_reset_postdata();
            echo '</ul>';
        echo '</li>';
        }
    ?>
  </ul>
</div>
1
19.02.2020, 22:04