Obter os filhos da categoria pai


17

Estou tentando fazer com que todas as categorias filho sejam exibidas nesse loop, mas estou tendo problemas com o código. É isso 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 ótimo

Respostas:


19

Você não pode simplesmente passar a string "pai" para get_categories. Você precisa 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.

filho_de (inteiro) Exibe todas as categorias que são descendentes (ou seja, filhos e netos) da categoria identificada por seu ID. Não há padrão para este parâmetro. Se o parâmetro for usado, o parâmetro hide_empty será definido como false.

pai (inteiro) Exibe apenas as categorias que são descendentes diretos (ou seja, apenas filhos) da categoria identificada por seu ID. Isso NÃO funciona como o parâmetro 'child_of'. Não há padrão para este parâmetro. [Em 2.8.4]

Agora você precisa fazer um loop sobre o $categories. Você não pode apenas ecoar uma matriz.

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>';
}

Infelizmente, isso está me dando uma saída do Array. Não há valores estão sendo puxado.
Chris Da Sie

'Matriz' é o que acontece quando você tenta repetir uma matriz. Você precisa fazer um loop sobre a matriz e repetir os elementos individuais.
S_ha_dum

2
Você pode querer adicionar 'hide_empty' => false. Para também mostrar categorias vazias.
Floris

2

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

<?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 favor edite sua resposta , e adicionar uma explicação: por que isso poderia resolver o problema?
fuxia

0

Se não houver valores na matriz, você pode tentar a seguinte abordagem:

$last_categories = get_categories(
  array(
    'taxonomy' => 'product_cat',
    'parent' => $sub_category->cat_ID
  )
);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.