Jak mogę uzyskać tylko warunki dla rodziców?

19

Czy jest jakiś sposób na uzyskanie tylko warunków nadrzędnych z niestandardowej taksonomii lub kategorii?

Mamaduka
źródło

Odpowiedzi:

38

Tak, po prostu podaj parametr nadrzędny, get_termskiedy go wywołujesz, jak zauważył Michael.

Od wersji WP 4.5 jest to zalecane użycie:

$myterms = get_terms( array( 'taxonomy' => 'taxonomy_name', 'parent' => 0 ) );

Przed WP 4.5 było to domyślne użycie:

$myterms = get_terms( 'taxonomy_name_here', array( 'parent' => 0 ) );

Zwróci wszystkie warunki, które mają wartość nadrzędną 0, tj. warunki najwyższego poziomu.

t31os
źródło
Zwraca pustą tablicę dla taksonomii niestandardowych :(
Mamaduka
Czy warunki w tej taksonomii są powiązane z postem (lub typem niestandardowym)? Jeśli nie, musisz przekazać hide_emptyparametr, ustawiając go 0również na, abyś mógł zobaczyć warunki, które nie są obecnie używane.
t31os
Pamiętaj, że otrzyma to tylko poziom nadrzędny 1, termin „matka”. Aby odzyskać wszystkich przodków, użyj get_ancestors(TERM_ID, TAXONOMY, 'taxonomy') developer.wordpress.org/reference/functions/get_ancestors
jave.web
2

w przypadku szablonów wiadomości e-mail woocommerce użyj:

$terms = get_the_terms( $_product->id , 'product_cat');
    if($terms) {
        foreach( $terms as $term ) {
            $term = get_term_by("id", $term->parent, "product_cat");
            if ($term->parent > 0) {
                $term = get_term_by("id", $term->parent, "product_cat");
            }
            $cat_obj = get_term($term->term_id, 'product_cat');
            $cat_name = $cat_obj->name;
        }
    }
echo '<br />('. $cat_name . ')';
3243
źródło
5
dodaj wyjaśnienie, w jaki sposób Twój kod może rozwiązać pytanie. OP nie zadał pytania o szablony e-mail woocommerce.
iEmanuele
1
 $archive_cats= get_terms( 'archivecat', 'orderby=count&hide_empty=0&parent=0' );
Ashraf Mohammed
źródło
3
Czym różni się ta (już zaakceptowana) odpowiedź zaproponowana ponad dwa lata temu?
tfrommen
widziałeś komentarze do (już zaakceptowanej) odpowiedzi? jeśli nie ma więcej odpowiedzi, dlaczego pytanie wciąż się otwiera ?!
ashraf mohammed
Było jedno zapytanie dotyczące terminów, które się nie wyświetlały, które nie było związane z pierwotnym pytaniem. Odpowiedziałem na to pytanie w komentarzu do odpowiedzi (ponieważ nie miało to wpływu na ważność lub poprawność już udzielonej odpowiedzi).
t31os
1
Proszę rozwiązać to w edycji. Wyjaśnij swój kod.
kaiser