Как отобразить подкатегории страницы категории? - PullRequest
0 голосов
/ 26 марта 2020

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

  <?php
               $categories = get_the_category();
                $category_id = $categories[0]->cat_ID;
                foreach ( $category_id as $navItem ) {
                    $class_names = $value = '';

                    $classes = empty( $navItem->classes ) ? array() : (array) $navItem->classes;
                    $classes[] = 'menu-item-' . $navItem->ID;

                    $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $navItem ) );

                    if ( in_array( 'current-menu-item', $classes ) )
                        $class_names .= ' active';

                    $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';

                    $id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $navItem->ID, $navItem );
                    $id = $id ? ' id="' . esc_attr( $id ) . '"' : '';
                    echo '<li ' . $id . ' ' . $class_names . '><a href="'.$navItem->url.'" title="'.$navItem->title.'">'.$navItem->title.'</a></li>';
                }
                ?>

спасибо

1 Ответ

0 голосов
/ 29 марта 2020

Хорошо, я сделал поиск и смог исправить это

это код

   <?php
         if(is_category() && the_category_ID(false) != NULL)
        {
        $categories = get_categories(array("child_of" => the_category_ID(false), "hide_empty" => 0));


        foreach ($categories as $category)
                {

                    $class_names = $value = '';

                    $classes = (array) $navitem ='';
                    $classes[] = 'menu-item-' . $category->cat_ID;

                    $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $category ) );

                    if ( in_array( 'current-menu-item', $classes ) )
                        $class_names .= ' active';

                    $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';

                    $id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $category->cat_ID, $category );
                    $id = $id ? ' id="' . esc_attr( $id ) . '"' : '';

                      echo '<li ' . $id . ' ' . $class_names . '><a href="'.get_bloginfo("url") .'/category/' .$category->slug.'" title="'.$category->cat_name.'">'.$category->cat_name.'</a></li>'; 
                      } 



                }
                ?>

надеюсь, это кому-то тоже поможет

the_category_ID()

этот получает идентификатор текущей категории страницы, и мы используем false, поэтому он не будет печатать идентификатор

, а затем l oop внутри для подкатегорий или дочерних категорий и получает их имена + слаг для URL

...