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