Как показать термины произвольной таксономии вместе с изображением, которое хранится в произвольном поле?

Здравствуйте! <br/> У меня есть таксономия с терминами, и у каждого термина в дополнительном поле хранится изображение. <br/> Как я могу отобразить этот список на главной странице, включая картинки? <br/> Я успешно вывожу список, но не могу вывести изображения. <br/> <pre><code class="php">&lt;?php
$terms = get_terms(
  array(
    'taxonomy'   =&gt; 'games',
    'hide_empty' =&gt; true,
    'pad_counts'  =&gt; true,
    'orderby' =&gt; 'count',
    'order' =&gt; 'DESC',
  )
);
  
if ( ! empty( $terms ) &amp;&amp; is_array( $terms ) ) {
    echo '&lt;ul class="sidebar-offer_cat"&gt;';
    foreach ( $terms as $term ) {
        $curTerm = $wp_query-&gt;queried_object;
        $class = ( $term-&gt;name == $curTerm-&gt;name ) ? 'active' : '';
        ?&gt;
  

			            &lt;a href="&lt;?php echo esc_url( get_term_link( $term ) ) ?&gt;" title="Adventure Games" class=""&gt;
			                &lt;img class="img-lazy loaded" src="&lt;?php the_field('logo-cat'); ?&gt;" alt="Adventure Games"&gt;
			                &lt;span&gt;&lt;?php echo $term-&gt;name; ?&gt;&lt;/span&gt;
			            &lt;/a&gt;   
        &lt;?php
    }
    echo '&lt;/ul&gt;';
}
?&gt;</code></pre> <br/> <br/> Заранее благодарю!
  • 16 января 2025 г. 17:54
Ответы на вопрос 2
Чтобы отобразить изображение, привязанное к термину таксономии, вам нужно использовать функцию `get_field()`, а не `the_field()`, потому что `the_field()` выводит значение сразу, а `get_field()` возвращает его. Также вы должны указать термин, для которого хотите получить поле. Вот как это можно сделать:

```php
<?php
$terms = get_terms(
  array(
    'taxonomy'   => 'games',
    'hide_empty' => true,
    'pad_counts' => true,
    'orderby'    => 'count',
    'order'      => 'DESC',
  )
);

if ( ! empty( $terms ) && is_array( $terms ) ) {
    echo '<ul class="sidebar-offer_cat">';
    foreach ( $terms as $term ) {
        $curTerm = $wp_query->queried_object; // Получаем текущий термин
        $class = ( $term->name == $curTerm->name ) ? 'active' : '';

        // Получаем изображение для текущего термина
        $term_image = get_field('logo-cat', 'term_' . $term->term_id);
        ?>
        <li class="<?php echo esc_attr($class); ?>">
            <a href="<?php echo esc_url( get_term_link( $term ) ); ?>" title="<?php echo esc_attr($term->name); ?>" class="">
                <?php if ($term_image): ?>
                    <img class="img-lazy loaded" src="<?php echo esc_url($term_image); ?>" alt="<?php echo esc_attr($term->name); ?>">
                <?php endif; ?>
                <span><?php echo esc_html($term->name); ?></span>
            </a>
        </li>
        <?php
    }
    echo '</ul>';
}
?>
```

В этом коде:
1. Я использую функцию `get_field('logo-cat', 'term_' . $term->term_id)`, чтобы получить значение произвольного поля для каждого термина. Здесь `'term_' . $term->term_id` — это идентификатор термина в виде строки, который необходим для правильного получения поля.
2. Я добавил проверку, чтобы убедиться, что изображение действительно существует перед его выводом.
3. Используются функции `esc_url()` и `esc_html()`, чтобы обеспечить безопасность вывода данных.

Теперь, когда вы выполните этот код, он должен корректно отображать термины таксономии вместе с соответствующими изображениями.
$term = get_queried_object();
the_field('logo-cat' , $term);


Документация ACF
Похожие вопросы