Obter os filhos da categoria pai

13

Estou tentando fazer com que todas as categorias de filhos sejam exibidas nesse loop, mas estou com dificuldades com o código. Isso é o que eu tenho até agora.

<?php $args=array('orderby' => 'name', 'order' => 'ASC');
    $categories=get_categories($args); 
    foreach ($categories as $cat) { ?>
    <dt><a href="#" class="customer-acquisitiontop" id="<?php echo $cat->slug; ?>" data-filter=".<?php echo $cat->slug; ?>"><h2><?= $cat->cat_name; ?></h2></a></dt>
    <dd><div class="services">
    <?= $categories=get_categories('parent'); ?> /*This should be the children of the parent category */
    </div>
    </dd>
<?php } ?>

Qualquer ajuda seria ótima

    
por Chris Da Sie 29.11.2012 / 16:32

2 respostas

16

Você não pode simplesmente passar a string "pai" para get_categories . Você tem que passar o ID do pai.

$categories=get_categories(
    array( 'parent' => $cat->cat_ID )
);

Observe que existem dois parâmetros semelhantes, mas não iguais, "get child" que você pode usar.

  

criança_de        (integer) Exibe todas as categorias que são descendentes (ou seja, filhos e netos) da categoria identificada por seu ID. Lá   não é padrão para este parâmetro. Se o parâmetro for usado, o   O parâmetro hide_empty está definido como false.

     

pai       (integer) Exibe apenas categorias descendentes diretas (ou seja, somente crianças) da categoria identificada por seu ID. Isso faz   NÃO funciona como o parâmetro 'child_of'. Não há nenhum padrão para este   parâmetro. [Em 2.8.4]

Agora você precisa fazer um loop sobre o $categories . Você não pode simplesmente ecoar um array.

foreach ($categories as $c) {
    var_dump($c);
    // what you really want instead of var_dump is something to
    // to create markup-- list items maybe, For example...
    echo '<li>'.$c->cat_name.'</li>';
}
    
por s_ha_dum 29.11.2012 / 17:01
2

Use o código abaixo em seu arquivo archive.php. Este código irá ajudá-lo:

<?php

    $term = get_queried_object();

    $children = get_terms( $term->taxonomy, array(
        'parent'    => $term->term_id,
        'hide_empty' => false
    ) );

    if ( $children ) { 
        foreach( $children as $subcat )
        {
            echo '<li><a href="' . esc_url(get_term_link($subcat, $subcat->taxonomy)) . '">' . $subcat->name . '</a></li>';
        }
    }
?>
    
por Violla Queue 25.04.2018 / 09:18