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

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

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

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
  )
);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.