Получить URL таксономии, имя, количество публикаций и изображение

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

Я пытаюсь отобразить определенную таксономию (канал) на странице archive.php. Я хочу отобразить URL таксономии, имя, количество записей и изображение таксономии.

Вот что у меня работает на данный момент:

<?php
$taxonomy = 'channel';
$tax_terms = get_terms($taxonomy);
$image_url = print apply_filters( 'taxonomy-images-queried-term-image', '' );
?>

<ul>
    <?php
    foreach ($tax_terms as $tax_term) { ?>

        <li>
            <?php echo esc_attr(get_term_link($tax_term, $taxonomy)); ?>
            <?php echo $tax_term->name; ?>
            <?php echo $tax_term->count; ?>            
            <?php echo $image_url->image_id; ?>
        </li>
    <?php } ?>
</ul>

Я уже сделал так, что URL, имя и количество записей работают, а вот часть с изображением таксономии, предоставляемым плагином Taxonomy Images, не работает. (в фрагменте это $image_url)

https://wordpress.org/plugins/taxonomy-images/

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

Нужна помощь, спасибо.

Не знаю, как этот плагин работает подробно, но я бы попробовал вот это:

<?php
$taxonomy = 'channel';
$tax_terms = get_terms($taxonomy);
?>

    <ul>
    <?php
    foreach ($tax_terms as $tax_term) { ?>

        <li>
            <?php echo esc_attr(get_term_link($tax_term, $taxonomy)); ?>
            <?php echo $tax_term->name; ?>
            <?php echo $tax_term->count; ?>             
            <?php print apply_filters( 'taxonomy-images-queried-term-image', '' ); ?>
        </li>
    <?php } ?>
</ul>

Нашел более подходящий вариант.

Вместо использования плагина Taxonomy Images я решил использовать более распространенный плагин Categories Images.

https://wordpress.org/plugins/categories-images/

Работающий код ниже:

<?php
$taxonomy = 'channel';
$tax_terms = get_terms($taxonomy);

foreach ($tax_terms as $tax_term) { ?>

    <div class="column">
        <?php echo esc_attr(get_term_link($tax_term, $taxonomy)); ?>
        <?php echo $tax_term->name; ?>
        <?php echo $tax_term->count; ?>             
        <?php echo z_taxonomy_image_url($tax_term->term_id); ?>
    </div>
<?php } ?>

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

Для отображения таксономии (в вашем случае — «канала») на странице archive.php в WordPress вам нужно получить URL, название, количество постов и изображение таксономии. Рассмотрим, как добиться этого с помощью плагина Categories Images вместо Taxonomy Images, как вы уже упомянули в своих последних обновлениях.

1. Подключение необходимых плагинов

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

2. Получение термина таксономии и его атрибутов

Вот пример кода, который обеспечит получение всех необходимых данных и вывод их в HTML:

<?php
$taxonomy = 'channel'; // Определяем таксономию
$tax_terms = get_terms($taxonomy); // Получаем термины таксономии

if (!empty($tax_terms) && !is_wp_error($tax_terms)) { // Проверяем, есть ли термины и не возникла ли ошибка
    echo '<ul>'; // Начинаем ненумерованный список
    foreach ($tax_terms as $tax_term) {
        echo '<li>'; // Начинаем элемент списка
        echo '<a href="' . esc_url(get_term_link($tax_term, $taxonomy)) . '">'; // Выводим ссылку на термин
        echo esc_html($tax_term->name); // Выводим название термина
        echo '</a> - '; // Добавляем разделитель
        echo esc_html($tax_term->count) . ' постов'; // Выводим количество постов
        echo '<br>'; // Перенос строки

        // Получаем и выводим изображение таксономии
        $image_url = z_taxonomy_image_url($tax_term->term_id);
        if ($image_url) {
            echo '<img src="' . esc_url($image_url) . '" alt="' . esc_attr($tax_term->name) . '" />'; // Вставляем изображение
        } else {
            echo '<span>Изображение отсутствует</span>'; // Если изображение отсутствует, выводим сообщение
        }

        echo '</li>'; // Закрываем элемент списка
    }
    echo '</ul>'; // Закрываем ненумерованный список
} else {
    echo '<p>Нет доступных каналов.</p>'; // Сообщение о недоступных терминах
}
?>

3. Как работает этот код

  • Получаем термины: Мы используем функцию get_terms() для получения всех терминов таксономии ‘channel’.
  • Проверка на ошибки: Проверяем, существуют ли термины и не возникли ли ошибки при их получении.
  • Вывод элементов: Для каждого термина формируем HTML-элемент списка, в котором выводим ссылку на термин, его название, количество постов и изображение.
  • Обработка изображений: Используем функцию z_taxonomy_image_url($tax_term->term_id), чтобы получить URL изображения, связанного с термином.

4. SEO-оптимизация

  • Использование esc_html() и esc_url(): Эти функции помогают защищать ваш код от XSS-уязвимостей.
  • Альтернативный текст для изображений: Альт-текст для изображений (использующий название термина) важен для SEO и доступности.

Этот код поможет вам корректно отобразить необходимую информацию о таксономии на странице archive.php. Убедитесь, что все функции работают как ожидалось, и тестируйте на разных терминах для проверки корректности вывода.

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

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