Как вывести произвольное поле ACF из таксономии произвольного типа записей?

Ссылка скопирована
1 ответ

есть произвольный тип записей у него создана таксономия cat, через acf добавлено поле в таксономию img, нужно на отдельной странице вывести таксономии вместе с этим полем. Разными путями пытался, таксономии выводятся, поле acf нет

Дополнительно:

Ответы:

$field = get_field('some', $term->taxonomy . '_' . $term->term_id)

$field = get_field('some', $term->taxonomy . '_' . $term->term_id)

так

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Ольга Сеть Ответ

Для 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>';
    }
}

$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');

$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 создано для одной таксономии, а вывод идёт по другой.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно