Как вывести произвольное поле ACF из таксономии произвольного типа записей?
есть произвольный тип записей у него создана таксономия cat, через acf добавлено поле в таксономию img, нужно на отдельной странице вывести таксономии вместе с этим полем. Разными путями пытался, таксономии выводятся, поле acf нет
Дополнительно:
Ответы:
$field = get_field('some', $term->taxonomy . '_' . $term->term_id) |
$field = get_field('some', $term->taxonomy . '_' . $term->term_id)
так
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для ACF-поля у термина таксономии нужно передавать не ID записи, а специальный идентификатор термина. Формат зависит от ACF, но обычно работает строка
taxonomy_termid, напримерcat_15, гдеcat— slug таксономии, а 15 — ID термина.Пример вывода терминов таксономии с ACF-полем
img:$terms = get_terms([ 'taxonomy' => 'cat', 'hide_empty' => false, ]); if (!is_wp_error($terms) && $terms) { foreach ($terms as $term) { $image = get_field('img', $term->taxonomy . '_' . $term->term_id); echo '<div class="term-card">'; if ($image) { echo wp_get_attachment_image($image['ID'], 'medium'); } echo '<h3>' . esc_html($term->name) . '</h3>'; echo '</div>'; } }
Если поле ACF возвращает не массив, а ID изображения, код будет другим:
$image_id = get_field('img', $term->taxonomy . '_' . $term->term_id); echo wp_get_attachment_image($image_id, 'medium');
Проверьте в настройках поля ACF, что оно привязано именно к нужной таксономии, а не к записи. В Location Rules должно быть что-то вроде: Taxonomy Term is equal to cat.
Частая ошибка — писать
get_field('img', $term->term_id). Так ACF ищет поле у записи с таким ID, а не у термина. Для терминов почти всегда нужен второй аргумент с таксономией.Если выводите на отдельной странице не архив термина, а список всех терминов,
get_queried_object()не поможет. Используйтеget_terms(), как в примере выше.Если поле всё равно пустое, временно выведите отладку:
var_dump($term->taxonomy . '_' . $term->term_id);и проверьте это значение в админке у конкретного термина. Часто проблема оказывается в другом slug таксономии или в том, что поле ACF создано для одной таксономии, а вывод идёт по другой.