Как показать изображение таксономии вместо имени таксономии в списке

Вопрос или проблема

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

Я также установил плагин taxonomy-images, но он только добавляет изображения, не заменяет имя таксономии. Спасибо.

Вот код, который у меня есть в файле archive{custom type}.php

<?php query_posts( array( 'post_type' => 'custom_type','posts_per_page' => 20 ) ); ?>

                        <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

                        <div class="col-md-3 clearfix"><div class="row"><article id="post-<?php the_ID(); ?>" <?php post_class( 'clearfix' ); ?> role="article">

                             <?php // конец заголовка статьи ?>
<a href="https://wordpress.stackexchange.com/questions/151402/<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
                            <section class="entry-content" style="text-align:center;padding:20px;">
                            <div class="thumcap2"><?php if ( has_post_thumbnail() ) { // проверяем, есть ли у поста назначенный миниатюрный рисунок.
  the_post_thumbnail(thumbnail);
} 
?></a><a href="https://wordpress.stackexchange.com/questions/151402/<?php the_permalink() ?>" class="title2" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></div>


                            </section> <?php // конец раздела статьи ?>

                            <footer class="article-footer" style="text-align:center;">
<?php
                                    printf( __( ' %4$s', 'bonestheme' ), get_the_time( 'Y-m-j' ), get_the_time( __( 'F jS, Y', 'bonestheme' )), bones_get_the_author_posts_link(), get_the_term_list( get_the_ID(), 'custom_cat', ' ', ' | ', '' ) );
                                ?>
                            </footer> <?php // конец нижнего колонтитула статьи ?>

                        </article></div></div> <?php // конец статьи ?>

                        <?php endwhile; ?><div class="clearfix"></div>

Мне удалось это исправить
без плагина, просто сохранив в темах изображение с именем слага таксономии в формате .png и с этой модификацией кода

<footer class="article-footer" style="text-align:center;">
 <?php  //$terms= apply_filters( 'taxonomy-images-list-the-terms', '', array('taxonomy'     => 'custom_cat',)); ?>
<?php //print_r( $terms); ?>
<?php  $terms = get_the_terms( $post->ID, 'custom_cat' ); 
$numcat=sizeof($terms);
 foreach ( $terms as $term ) {


 $term_link = get_term_link( $term, 'custom_cat' );
 if( file_exists( TEMPLATEPATH .'/images/'. $term->slug .'.png') ){
?>
    <a rel="tag" href="https://wordpress.stackexchange.com/questions/151402/<?php echo $term_link; ?>"><img title="<?php  echo $term->name; ?>" style="height: 21px; width: 21px;" src="<?php echo  get_template_directory_uri() . '/images/' . $term->slug . '.png' ?>" alt="<?php  echo $term->name; ?>"></a>| 
<?php }else{ ?>
 <a rel="tag" href="https://wordpress.stackexchange.com/questions/151402/<?php echo $term_link; ?>"><?php  echo $term->name; ?></a>| 
 <?php } }

                                    //printf( __( ' %4$s', 'bonestheme' ), get_the_time( 'Y-m-j' ), get_the_time( __( 'F jS, Y', 'bonestheme' )), bones_get_the_author_posts_link(), get_the_term_list( get_the_ID(), 'custom_cat', ' ', ' | ', '' ) );
                                ?>
                            </footer> <?php // конец нижнего колонтитула статьи ?>

Ответ или решение

Чтобы отобразить изображения таксономии вместо их названий в кастомном списке таксономий в WordPress, вы можете следовать следующему пошаговому руководству. Этот подход будет использовать плагин Taxonomy Images и собственные изображения (которые вы предварительно должны добавить в папку вашей темы).

Шаг 1: Подготовьте изображения

Во-первых, убедитесь, что у вас есть изображения для всех таксономий, для которых вы хотите отобразить изображения вместо названий. Сохраните изображения в формате .png с именами, соответствующими слагам ваших таксономий, в папке images вашей темы.

Шаг 2: Модификация archive{custom_type}.php

После подготовки изображений следующим шагом будет редактирование вашего файла archive{custom_type}.php, чтобы использовать эти изображения. На основе кода, который вы привели, изменить его можно так:

<footer class="article-footer" style="text-align:center;">
    <?php 
    $terms = get_the_terms($post->ID, 'custom_cat');
    if ($terms && !is_wp_error($terms)) {
        foreach ($terms as $term) {
            $term_link = get_term_link($term, 'custom_cat');
            $image_path = TEMPLATEPATH . '/images/' . $term->slug . '.png';
            if (file_exists($image_path)) {
                ?>
                <a rel="tag" href="<?php echo esc_url($term_link); ?>">
                    <img src="<?php echo esc_url(get_template_directory_uri() . '/images/' . $term->slug . '.png'); ?>" 
                         alt="<?php echo esc_attr($term->name); ?>" 
                         title="<?php echo esc_attr($term->name); ?>" 
                         style="height: 21px; width: 21px;">
                </a> | 
                <?php 
            } else {
                ?>
                <a rel="tag" href="<?php echo esc_url($term_link); ?>">
                    <?php echo esc_html($term->name); ?>
                </a> | 
                <?php 
            }
        }
    }
    ?>
</footer>

Пояснение к коду

  1. Получение терминов таксономии: Мы используем функцию get_the_terms, чтобы получить термины, связанные с постом. Здесь мы проверяем, есть ли термины и не возникла ли ошибка.

  2. Проверка наличия изображения: Используется конструкция file_exists, чтобы определить, существует ли файл изображения для данного слага таксономии.

  3. Отображение изображения или имени: Если изображение для термина найдено, оно будет отображаться в виде тега <img>. Если изображения нет, будет показано имя термина.

Шаг 3: Оптимизация и тестирование

После выполнения этих шагов протестируйте свою страницу, чтобы убедиться, что изображения отображаются корректно. Убедитесь, что стили изображений соответствуют вашему дизайну. Вы можете добавить CSS-стили для улучшения их отображения.

Заключение

Следуя описанным выше шагам, вы сможете эффективно заменить названия таксономий на их иконки в вашем кастомном типе записи. Это не только улучшит визуальную составляющую вашего сайта, но и сделает интерфейс более интуитивно понятным для пользователей. Если вы столкнетесь с дополнительными трудностями, возможно, нужно будет рассмотреть изменения в плагине Taxonomy Images или другие кастомные решения.

Оцените материал
Добавить комментарий

Капча загружается...