¿Cómo accedo a un solo término de una publicación?

2

Necesito ayuda para acceder a un término específico de una taxonomía personalizada.

Estoy obteniendo los términos con

 $terms = wp_get_post_terms($post->ID, 'mytax', array("fields" => "all"));

Si print_r($terms) esto es lo que obtengo:

Array ( 
    [0] => WP_Term Object ( 
        [term_id] => 30 
        [name] => Term1 
        [slug] => term1 
        [term_group] => 0 
        [term_taxonomy_id] => 30 
        [taxonomy] => mytax 
        [description] => 
        [parent] => 0 
        [count] => 78 
        [filter] => raw 
    ) 
    [1] => WP_Term Object ( 
        [term_id] => 32 
        [name] => Term2 
        [slug] => term2 
        [term_group] => 0 
        [term_taxonomy_id] => 32 
        [taxonomy] => mytax 
        [description] => 
        [parent] => 30 
        [count] => 44 
        [filter] => raw 
    ) 
)

¿Cómo extraigo el ID para Term1 de esta matriz?

    
pregunta Philipp K 19.06.2018 - 22:09

2 respuestas

2

Es un poco difícil estar seguro, ¿qué estás preguntando exactamente, pero ... Déjame intentar responder ...

Entonces, en algún lugar de single.php estás obteniendo términos para la publicación actual con este código:

$terms = wp_get_post_terms($post->ID, 'mytax', array("fields" => "all"));

¿Y desea obtener el ID del primer término de esa lista?

Si es así, puedes lograr esto con este código:

$terms = wp_get_post_terms($post->ID, 'mytax', array("fields" => "all"));
$term_id = false;
if ( $terms ) {
    $term_id = $terms[0]->term_id;
}
    
respondido por el Krzysiek Dróżdż 19.06.2018 - 23:05
2

Puedes tomar solo un término, si eso es lo que quieres hacer.

Utilizando get_term_by() :

$term = get_term_by( 'name', 'Term1', 'mytax' );

debe entregar el objeto WP_Term para el término denominado Term1 en la taxonomía mytax .

[editar] Obtenga el primer término:

$terms = wp_get_post_terms( $post->ID, 'mytax', array( "fields" => "all" ) );
if ( ! empty( $terms ) {
    $term = $terms[0];
    $term_id = $terms[0]->term_id; // If you just need the term ID.
}

Esto capturará el primer término de la lista que está recibiendo en la pregunta original. Sin embargo, tenga en cuenta que, de forma predeterminada, wp_get_post_terms() ordena los términos en orden ascendente por su campo name . Puede modificar esto usando order y orderby en el parámetro $args :

$args = array(
    'fields'  => 'all',
    'orderby' => 'slug',
    'order'   => 'DESC',
    // ...for example.
);
$terms = wp_get_post_terms( $post->ID, 'mytax', $args ) );
if ( ! empty( $terms ) {
    $term = $terms[0];
    $term_id = $terms[0]->term_id; // If you just need the term ID.
}
    
respondido por el Pat J 19.06.2018 - 22:22

Lea otras preguntas en las etiquetas