Obtener términos por IDs con orden específico de IDs

2 feb 2017, 21:29:19
Vistas: 20.1K
Votos: 6

Quiero obtener términos por IDs manteniendo el orden de los IDs. Pero no está funcionando, WordPress cambia automáticamente el orden.

Mi código-

$catsArray = array(159, 155, 143, 153, ......);
$series = get_terms( array(
              'taxonomy' => 'ctc_sermon_series',
              'number'  =>  9,
              'offset'  =>  $offset,
              'include' => $catsArray,
              'hide_empty'  => false, 
            ) );

Y el resultado-

(
    [0] => WP_Term Object
        (
            [term_id] => 155
            [name] => 10
            [slug] => 10
            [term_group] => 0
            [term_taxonomy_id] => 155
            [taxonomy] => ctc_sermon_series
            [description] => 
            [parent] => 0
            [count] => 1
            [filter] => raw
        )

    [1] => WP_Term Object
        (
            [term_id] => 159
            [name] => 14
            [slug] => 14
            [term_group] => 0
            [term_taxonomy_id] => 159
            [taxonomy] => ctc_sermon_series
            [description] => 
            [parent] => 0
            [count] => 1
            [filter] => raw
        )

    [2] => WP_Term Object
        (
            [term_id] => 153
            [name] => Nombre 8
            [slug] => nombre-8
            [term_group] => 0
            [term_taxonomy_id] => 153
            [taxonomy] => ctc_sermon_series
            [description] => Descripción Nombre 8
            [parent] => 0
            [count] => 1
            [filter] => raw
        )

    [3] => WP_Term Object
        (
            [term_id] => 143
            [name] => Serie 1
            [slug] => serie-1
            [term_group] => 0
            [term_taxonomy_id] => 143
            [taxonomy] => ctc_sermon_series
            [description] => Descripción Serie 1
            [parent] => 0
            [count] => 3
            [filter] => raw
        )

)

Espero obtener primero el término con ID-159, pero siempre obtengo primero el resultado del ID-155. Necesito obtener el resultado según la secuencia del array de IDs.

Gracias de antemano :)

0
Todas las respuestas a la pregunta 3
0
17

Entonces, creo que la pregunta es cómo obtener los términos en el orden de los IDs que has proporcionado, que podrían no estar ordenados de forma ascendente o descendente, sino en un orden aleatorio.

Sorprendentemente, creo que hay un atajo para eso en WP - ¿quién lo hubiera pensado? Esto, creo, es lo que quieres usar:

$catsArray = array(159, 155, 143, 153, ......);
$series = get_terms( array(
          'taxonomy' => 'ctc_sermon_series',
          'number'  =>  9,
          'offset'  =>  $offset,
          'include' => $catsArray,
          'hide_empty'  => false, 
          'orderby'  => 'include', // <--- 
        ) );

¡Espero que esto ayude!

2 feb 2017 23:01:21
2

Esto podría funcionar para ti, aunque no lo he probado.

$catsArray = array(159, 155, 143, 153, ......);
$series = get_terms( array(
              'taxonomy' => 'ctc_sermon_series', // Taxonomía para las series de sermones
              'number'  =>  9, // Número de términos a recuperar
              'offset'  =>  $offset, // Desplazamiento
              'include' => $catsArray, // IDs de categorías a incluir
              'hide_empty'  => false, // Mostrar términos aunque estén vacíos
              'orderby' => 'term_id', // Ordenar por ID de término
              'order' => 'DESC', // Orden descendente (o ASC para ascendente)
            ) );
2 feb 2017 22:49:46
Comentarios

Actualmente quiero obtener términos por el orden del array actual, no por el orden de term_id.

Arif Khan Arif Khan
2 feb 2017 22:57:58

Entendido. La respuesta de @MacPrawn es lo que estás buscando. Votado.

Anwer AR Anwer AR
2 feb 2017 23:17:41
0

Simplemente usa el parámetro 'fields'.

wp_get_post_terms($post_id, 'some_taxonomy', array('fields' => 'ids'))

Lee esto https://wp-kama.com/function/wp_get_post_terms

13 sept 2022 10:27:47