Почему get_the_terms () завершается ошибкой при выполнении итераций по запросу всех объектов первого объекта, у которого есть термин, на странице которого он выполняется? - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть пользовательский тип book и таксономия genre с такими терминами, как novels и mysteries. Эти две страницы работают: страница «все книги», в которой перечислены все книги, и страница «жанр», в которой перечислены все книги в жанре. Я хочу добавить на страницу жанра список всех книг, бегущих по сторонам. Я запрашиваю все книги следующим образом:

query_posts(['post_type' => ['book']]);

... затем через них oop, используя тот же код, который работает на странице всех книг.

Скажем, мы находимся на страница загадок:

https://domain.tld/genres/mysteries/

... когда я пытаюсь получить термины жанра для каждой книги в этом списке:

$terms = get_the_terms(get_the_ID(), ['taxonomy' => 'genre']);

... $terms успешно получает массив жанровых терминов, когда книга не загадка, но не когда книга загадка. В случае сбоя $terms имеет значение WP_Error из Invalid taxonomy.

Я могу обойти это, но, похоже, мне не нужно.

Вот большая выдержка из кода:

wp_reset_query(); // same behavior with or without this line
query_posts(['post_type' => ['book']]);

if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        $terms = get_the_terms(get_the_ID(), ['taxonomy' => 'genre']);
    }
}

Вывод со страницы загадок (среди всех книг есть две загадки):

Warning: Illegal offset type in isset or empty in /PATH_REDACTED/public_html/wp-includes/taxonomy.php on line 290

Warning: Illegal offset type in isset or empty in /PATH_REDACTED/public_html/wp-includes/taxonomy.php on line 290
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...