Holen Sie sich die Kinder der Elternkategorie

17

Ich versuche, alle untergeordneten Kategorien in dieser Schleife anzuzeigen, aber ich habe Probleme mit dem Code. Das habe ich bisher.

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

Jede Hilfe wäre toll

Chris Da Sie
quelle

Antworten:

19

Sie können den String "parent" nicht einfach übergeben get_categories. Sie müssen die ID des übergeordneten Elements übergeben.

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

Beachten Sie, dass es zwei ähnliche, aber ungleiche Parameter für "get child" gibt , die Sie verwenden können.

child_of (Ganzzahl) Zeigt alle Kategorien an, die Nachkommen (dh Kinder und Enkelkinder) der durch ihre ID identifizierten Kategorie sind. Für diesen Parameter gibt es keine Standardeinstellung. Wenn der Parameter verwendet wird, wird der Parameter hide_empty auf false gesetzt.

parent (integer) Zeigt nur Kategorien an, die direkte Nachkommen (dh nur Kinder) der durch ihre ID identifizierten Kategorie sind. Dies funktioniert NICHT wie der Parameter 'child_of'. Für diesen Parameter gibt es keine Standardeinstellung. [In 2.8.4]

Jetzt müssen Sie die Schleife überqueren $categories. Sie können ein Array nicht einfach wiedergeben.

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
quelle
Leider gibt mir das nur eine Ausgabe von Array. Es werden keine Werte eingezogen.
Chris Da Sie
'Array' passiert, wenn Sie versuchen, ein Array wiederzugeben. Sie müssen das Array durchlaufen und die einzelnen Elemente wiedergeben.
s_ha_dum
2
Vielleicht möchten Sie 'hide_empty' => false hinzufügen. Auch leere Kategorien anzeigen.
Floris
2

Verwenden Sie den folgenden Code in Ihrer archive.php-Datei. Dieser Code wird Ihnen helfen:

<?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>';
        }
    }
?>
Violla Queue
quelle
Bitte bearbeiten Sie Ihre Antwort und fügen Sie eine Erklärung hinzu: Warum könnte dies das Problem lösen?
Fuxia