Cum pot obține doar termenii părinte?
Există vreo metodă prin care să obțin doar termenii părinte dintr-o taxonomie personalizată sau categorie?

Da, doar trebuie să transmiți parametrul 'parent' către get_terms
când îl apelezi, așa cum a menționat Michael.
Începând cu WordPress 4.5, aceasta este utilizarea recomandată:
$myterms = get_terms( array( 'taxonomy' => 'taxonomy_name', 'parent' => 0 ) );
Înainte de WP 4.5, aceasta era utilizarea implicită:
$myterms = get_terms( 'taxonomy_name_here', array( 'parent' => 0 ) );
Va returna toți termenii care au valoarea părinte 0
, adică termenii de nivel superior.

Sunt termenii din acea taxonomie asociați cu un post (sau tip custom)? Dacă nu, va trebui să treci parametrul hide_empty
, setându-l și pe acesta la 0
, astfel încât să poți vedea termenii care nu sunt folosiți în prezent.

Reține că aceasta va obține doar nivelul părinte 1, termenul "mamă". Pentru a obține toți strămoșii, folosește get_ancestors(TERM_ID, TAXONOMY, 'taxonomy')
https://developer.wordpress.org/reference/functions/get_ancestors/

folosește parametrul 'parent':
http://codex.wordpress.org/Function_Reference/get_terms
sau
http://codex.wordpress.org/Function_Reference/get_categories

pentru șabloanele de email WooCommerce folosește următoarele:
$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 . ')';

Cum diferă acest lucru de răspunsul (deja acceptat) propus acum mai mult de doi ani?

ai văzut comentariile la răspunsul (deja acceptat)? dacă nu mai sunt răspunsuri utile, de ce întrebarea este încă deschisă?!

A existat o singură întrebare legată de termenii care nu apăreau, care nu era legată de întrebarea inițială, am abordat acea problemă într-un comentariu (deoarece nu avea nicio legătură cu validitatea sau corectitudinea răspunsului oferit deja).

Pentru această demonstrație, vom presupune că avem o taxonomie numită "Cărți". Și am putea avea o ierarhie de:
Ficțiune (id: 699)
- Aceasta este o Poveste de Ficțiune.
Non-Ficțiune
- Titlul Non-ficțiunii
Fantezie
- ...
Vrem să obținem termenul părinte al taxonomiei "Cărți" pentru postul curent.
/* Obține numele termenului părinte al taxonomiei după ID-ul postului */
function get_parent_term_by_post_id($taxname, $taxid=null){
if(isset($taxid)):
//Obține după ID-ul termenului transmis în funcție
$parent_tax = get_term_by('id', $taxid, $taxname);
return $parent_tax ->name; //folosește name, slug sau id
else:
//Obține după ID-ul postului paginii curente
$terms = wp_get_post_terms( get_the_id(), $taxname);
$tax_parent_id = $terms[0]->parent;
if($tax_parent_id == 0):
$tax_parent_id = $terms[0]->parent; //obține următorul ID părinte
endif;
$parent_tax = get_term_by('id', $tax_parent_id , $taxname);
return $parent_tax ->name; //folosește name, slug sau id
endif;
}
Apoi pur și simplu rulezi în template-ul tău astfel:
//introdu numele taxonomiei personalizate. va prelua după ID-ul postului
echo get_parent_term_name_by_post_id('books'); //returnează Ficțiune
sau
//după ID-ul termenului
echo get_parent_term_name_by_post_id('books', 699); //returnează Ficțiune
