Listează toate subcategoriile dintr-o categorie

30 mar. 2011, 16:56:04
Vizualizări: 131K
Voturi: 30

Cum pot obține toate subcategoriile dintr-o anumită categorie?

1
Comentarii

După cum este explicat aici, puteți folosi alternativ get_terms(): https://stackoverflow.com/questions/22443352/how-to-get-sub-categories-by-parent-category-id-in-wordpress

Pbinder Pbinder
7 aug. 2019 19:18:20
Toate răspunsurile la întrebare 2
4
39

Da, poți folosi get_categories() utilizând atributul 'child_of'. De exemplu, toate subcategoriile categoriei cu ID-ul 17:

$args = array('child_of' => 17);
$categories = get_categories( $args );
foreach($categories as $category) { 
    echo '<p>Category: <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "Vezi toate articolele din %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> </p> ';
    echo '<p> Descriere:'. $category->description . '</p>';
    echo '<p> Număr articole: '. $category->count . '</p>';  
}

Aceasta va obține toate categoriile care sunt descendente (adică copii și nepoți).

Dacă dorești să afișezi doar categoriile care sunt descendente directe (adică doar copii), poți folosi atributul 'parent'.

$args = array('parent' => 17);
$categories = get_categories( $args );
foreach($categories as $category) { 
    echo '<p>Category: <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "Vezi toate articolele din %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> </p> ';
    echo '<p> Descriere:'. $category->description . '</p>';
    echo '<p> Număr articole: '. $category->count . '</p>';  
}
30 mar. 2011 17:13:10
Comentarii

Doar o sugestie: Având în vedere popularitatea tipurilor de postări personalizate și a taxonomiilor, cred că ar fi mai bine să recomandăm get_terms, deoarece acest lucru ajută utilizatorii să se familiarizeze cu funcțiile generale de obținere a termenilor, în timp ce funcțiile specifice categoriilor sunt oarecum limitate la taxonomia încorporată (deși nu în toate cazurile). Nu trebuie să fii de acord, desigur, este doar o sugestie... ;)

t31os t31os
30 mar. 2011 17:49:21

Sunt de acord că get_terms() ar putea fi mai bun.

Django Reinhardt Django Reinhardt
4 apr. 2016 17:08:50

@t31os - ai putea să postezi un răspuns folosind get_terms, te rog?

vsync vsync
30 mar. 2018 23:23:33

vă rugăm să rețineți, implicit, acest lucru nu va returna categoriile care nu au nicio postare asociată. utilizați hide_empty => false pentru a obține toate categoriile (conform ultimei versiuni de WordPress)

Sumit Wadhwa Sumit Wadhwa
4 feb. 2020 16:06:46
0

Pentru "categorii" de tipuri personalizate de postări folosește get_terms().

(Modificare după răspunsul lui @Bainternet)

            $categories = get_terms( array(
                'taxonomy' => 'product_cat',
                'hide_empty' => false,
                'parent' => 17 // sau 
                //'child_of' => 17 // pentru a ținti nu doar copiii direcți
            ) );
            
            foreach($categories as $category) { 
                echo '<p>Categorie: <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "Vezi toate postările din %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> </p> ';
                echo '<p> Descriere:'. $category->description . '</p>';
                echo '<p> Număr postări: '. $category->count . '</p>';  
            }
17 feb. 2022 11:51:23