Получение терминов по ID в заданном порядке
Я хочу получить термины по ID в том же порядке, что и в массиве ID. Но это не работает, WordPress автоматически меняет порядок.
Мой код-
$catsArray = array(159, 155, 143, 153, ......);
$series = get_terms( array(
'taxonomy' => 'ctc_sermon_series',
'number' => 9,
'offset' => $offset,
'include' => $catsArray,
'hide_empty' => false,
) );
И результат-
(
[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] => Name 8
[slug] => name-8
[term_group] => 0
[term_taxonomy_id] => 153
[taxonomy] => ctc_sermon_series
[description] => Name 8 Des
[parent] => 0
[count] => 1
[filter] => raw
)
[3] => WP_Term Object
(
[term_id] => 143
[name] => Series 1
[slug] => series-1
[term_group] => 0
[term_taxonomy_id] => 143
[taxonomy] => ctc_sermon_series
[description] => Series 1 Description
[parent] => 0
[count] => 3
[filter] => raw
)
)
Я ожидаю получить сначала термин с ID-159, но каждый раз получаю сначала результат с ID-155. Мне нужно получить результаты в той же последовательности, что и в массиве ID.
Заранее спасибо :)
Итак, я полагаю, вопрос заключается в том, как получить термины в том же порядке, что и предоставленные вами ID, которые могут быть не отсортированы по возрастанию или убыванию, а в произвольном порядке.
Удивительно, но в WordPress, кажется, есть для этого готовая функция - кто бы мог подумать? Вот что, на мой взгляд, вам нужно использовать:
$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', // <---
) );
Надеюсь, это поможет!

Это может сработать для вас, хотя я не тестировал.
$catsArray = array(159, 155, 143, 153, ......);
$series = get_terms( array(
'taxonomy' => 'ctc_sermon_series',
'number' => 9,
'offset' => $offset,
'include' => $catsArray,
'hide_empty' => false,
'orderby' => 'term_id',
'order' => 'DESC', // или ASC
) );

Просто используйте параметр 'fields'.
wp_get_post_terms($post_id, 'some_taxonomy', array('fields' => 'ids'))
Читайте об этом https://wp-kama.com/function/wp_get_post_terms
