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

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.


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 . ')';

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' );

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.