¿Cómo puedo obtener solo los términos para padres?

19

¿Hay alguna forma de obtener solo términos principales de una taxonomía o categoría personalizada?

Mamaduka
fuente

Respuestas:

38

Sí, simplemente pase el parámetro padre a get_termscuando lo llame, como señaló Michael.

Desde WP 4.5 este es el uso recomendado:

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

Antes de WP 4.5, este era el uso predeterminado:

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

Devolverá todos los términos que tengan un valor padre de 0, es decir. Términos de nivel superior.

t31os
fuente
Devuelve una matriz vacía para taxonomías personalizadas :(
Mamaduka
¿Los términos en esa taxonomía están asociados con una publicación (o tipo personalizado)? De lo contrario, deberá pasar el hide_emptyparámetro, estableciéndolo 0también, para que pueda ver los términos que actualmente no se utilizan.
t31os
Tenga en cuenta que esto solo obtendrá el nivel de padre 1, el término "madre". Para recuperar todos los antepasados, use get_ancestors(TERM_ID, TAXONOMY, 'taxonomy') developer.wordpress.org/reference/functions/get_ancestors
jave.web
2

para las plantillas de correo electrónico de woocommerce use lo siguiente:

$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
fuente
55
agregue alguna explicación sobre cómo su código podría resolver la pregunta. OP no hizo una pregunta sobre las plantillas de correo electrónico de woocommerce.
iEmanuele
1
 $archive_cats= get_terms( 'archivecat', 'orderby=count&hide_empty=0&parent=0' );
ashraf mohammed
fuente
3
¿En qué se diferencia esto de la respuesta (ya aceptada) propuesta hace más de dos años?
tfrommen
¿viste comentarios sobre la respuesta (ya aceptada)? si no hay más respuestas no son útiles, ¿por qué la pregunta aún está abierta?
Ashraf Mohammed
Hubo una sola consulta con respecto a los términos que no aparecían, que no estaba relacionada con la pregunta original, abordé ese tema en un comentario de respuesta (ya que no tenía relación con la validez o corrección de la respuesta ya proporcionada).
t31os
1
Por favor, aborde eso en una edición. Explica tu código.
kaiser