Интересно, может ли кто-нибудь помочь.
Я создаю сайт, на котором, среди прочего, публикуются музыкальные обзоры. Настройка построена на пользовательском типе сообщений и ряде связанных таксономий.
Тип поста:
- my_albumreviews
Таксономии:
- художник
- этикетка
- Дата выпуска
На странице, отображающей обзор альбома ( my_albumreviews
тип сообщения), под основным содержанием мне нужен раздел, в котором отображаются «Другие обзоры от этого исполнителя». Я думаю, что я в правильном направлении с этим, но просто не могу заставить его работать.
$artistname = get_the_terms($post->ID, 'artist');
$args = array(
'post_type'=>'my_albumreviews',
'tax_query'=>array(array('taxonomy'=>'artist',
'field'=>'id',
'terms'=> '$artistname'
))
);
$artist_reviews = new WP_query($args);
Затем следует..
while ($artist_reviews->have_posts()) : $artist_reviews->the_post();
..который ничего не возвращает на страницу.
Любая помощь приветствуется.
Что приходит после
while ($artist_reviews->have_posts()) : $artist_reviews->the_post();
?Я буду запускать стандартные встроенные функции, такие как
the_title()
отображение ключевой информации из всех других обзоров текущего исполнителя.Спасибо за быстрый ответ, Фредерик. К сожалению, похоже, это не работает. Я заменил
$artistname
недавно сохраненный$name
в моем налоговом запросе, но он по-прежнему ничего не выводит на страницу, когда я вызываюthe_title()
. Я всегда буду получать только один результат в $artistname — имеет ли это значение? И я очень хочу остаться на таксономиях, так как их хранение поможет уменьшить количество ошибок, например, из-за орфографии. Битлз / Битлз. Спасибо еще раз.get_the_terms()
Возвращает список объектов терминов. Итак, прежде всего, вам нужно обрабатывать вывод как список, а не один элемент. Имя, которое вы ищете, хранится вname
поле.Может быть, вам следует использовать настраиваемое поле вместо таксономии? Мой опыт показывает, что они лучше работают для синглтонов.
Вы получаете настраиваемые поля в цикле с помощью get_post_meta() :
Надеюсь, это вам немного поможет!
При использовании
'tax_query'
with'field'=>'id'
then terms должен быть массив идентификаторов терминов, поэтому вместо использования get_the_terms() используйте wp_get_object_terms() и установите для полей идентификаторы, таким образом, вы получите массив с идентификаторами терминов:и вы должны быть установлены с помощью вашего кода.
get_the_terms возвращает массив объектов. Поэтому вам нужно пройтись по нему и сохранить идентификационные номера в другой массив, чтобы передать их в tax_query.
Также ‘$artistname’ является строкой ‘$artistname’. Если это переменная, она не должна заключаться в одинарные кавычки.
@Frederik, @Bainternet и Отто
Спасибо за помощь ребята. Тысяча благодарностей за помощь! Ключ заключался в том, чтобы убрать слаг таксономии из файла
wp_get_post_terms()
.Вот мой окончательный, полностью функционирующий код:
Огромное спасибо.
Мэтью