Obtenga los hijos de la categoría principal

17

Estoy tratando de mostrar todas las categorías secundarias en este bucle, pero estoy luchando con el código. Esto es lo que tengo hasta ahora.

<?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 } ?>

Cualquier ayuda sería genial

Chris Da Sie
fuente

Respuestas:

19

No puede simplemente pasarle la cadena "padre" get_categories. Tienes que pasar la identificación del padre.

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

Observe que hay dos parámetros "get child" similares pero no iguales que puede usar.

child_of (entero) Muestra todas las categorías que son descendientes (es decir, hijos y nietos) de la categoría identificada por su ID. No hay un valor predeterminado para este parámetro. Si se usa el parámetro, el parámetro hide_empty se establece en falso.

padre (entero) Muestra solo las categorías que son descendientes directos (es decir, solo hijos) de la categoría identificada por su ID. Esto NO funciona como el parámetro 'child_of'. No hay un valor predeterminado para este parámetro. [En 2.8.4]

Ahora necesitas recorrer el $categories. No puedes simplemente hacer eco de una 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>';
}
s_ha_dum
fuente
Desafortunadamente, eso solo me está dando una salida de Array. No se están introduciendo valores.
Chris Da Sie
'Array' es lo que sucede cuando intentas hacer eco de una matriz. Debe recorrer la matriz y hacer eco de los elementos individuales.
s_ha_dum
2
Es posible que desee agregar 'hide_empty' => false. Para mostrar también categorías vacías.
Floris
2

Use el código a continuación en su archivo archive.php. Este código te ayudará 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>';
        }
    }
?>
Cola Violla
fuente
Por favor, editar su respuesta , y añadir una explicación: ¿por qué podría que resolver el problema?
fuxia
0

Si no hay valores en la matriz, puede probar el siguiente enfoque:

$last_categories = get_categories(
  array(
    'taxonomy' => 'product_cat',
    'parent' => $sub_category->cat_ID
  )
);
croppio.com
fuente