Как получить родительские и дочерние категории в цикле - PullRequest
1 голос
/ 25 апреля 2019

Я пытаюсь создать цикл, который перебирает все мои родительские категории, повторяет <header>, содержащее его имя, а затем список, содержащий его дочерние категории.Как показано на картинке:

На данный момент все, что я получил, это простой foreach, который получает категории.Но мне нужна помощь с правильным выводом.

$categories = get_categories( array(
    'orderby' => 'name',
    'order'   => 'ASC'
));

foreach($categories as $category) {
    //the problem starts here.
} 

enter image description here

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Вы можете получить такой список, изменить код для радио кнопок

<?php 

                $taxonomyName = "category";
                $parent_terms = get_terms($taxonomyName, array('parent' => 0, 'orderby' => 'slug', 'hide_empty' => false));   

                foreach ($parent_terms as $pterm) {
                    echo '<div class="single_cat col-md-3">';
                        echo '<h3>'.$pterm->name.'</h3>'; 
                    $terms = get_terms($taxonomyName, array('parent' => $pterm->term_id, 'orderby' => 'slug', 'hide_empty' => false));
                    foreach ($terms as $term) {

                        echo "<ul>";
                        echo '<li><a href="' . get_term_link($term) . '">' . $term->name . '</a></li>'; 
                        echo "</ul>";

                    }
                      echo '</div>'; 
                }


                 ?>
0 голосов
/ 25 апреля 2019

Используйте параметр parent, чтобы добиться цели. Попробуйте этот подход -

$categories = get_categories( array(
        'orderby' => 'name',
        'order'   => 'ASC',
        'parent' => 0,
    ));


    foreach($categories as $category) {
        //Echo parent element  
        $child_categories = get_categories( array(
           'orderby' => 'name',
           'order'   => 'ASC',
           'parent' => $category->term_id,
         ));
        // now loop through $child_categories 
    } 
...