Получение терминов по ID в заданном порядке

2 февр. 2017 г., 21:29:19
Просмотры: 20.1K
Голосов: 6

Я хочу получить термины по 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.

Заранее спасибо :)

0
Все ответы на вопрос 3
0
17

Итак, я полагаю, вопрос заключается в том, как получить термины в том же порядке, что и предоставленные вами 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', // <--- 
        ) );

Надеюсь, это поможет!

2 февр. 2017 г. 23:01:21
2

Это может сработать для вас, хотя я не тестировал.

$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
            ) );
2 февр. 2017 г. 22:49:46
Комментарии

На самом деле мне нужно получить термины в порядке, соответствующем исходному массиву, а не в порядке term_id.

Arif Khan Arif Khan
2 февр. 2017 г. 22:57:58

Понял. Ответ @MacPrawn - это то, что вам нужно. Поднял рейтинг.

Anwer AR Anwer AR
2 февр. 2017 г. 23:17:41
0

Просто используйте параметр 'fields'.

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

Читайте об этом https://wp-kama.com/function/wp_get_post_terms

13 сент. 2022 г. 10:27:47