Вопрос или проблема
Я пытаюсь отобразить определенную таксономию (канал) на странице 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
. Убедитесь, что все функции работают как ожидалось, и тестируйте на разных терминах для проверки корректности вывода.