PHP код для вывода изображений без плагинов, в категориях (разделах) и тегах для сайта на WordPress.
Создал несколько вариантов. Первый вариант выводит изображения, если ко всем категориям существуют изображения. В этом случае не нужно делать проверку на наличие файла на сервере. И второй вариант, когда изображения имеются не для всех категорий и следует выводить только если они существуют на сервере.
1. Если ко всем категориям имеются изображения
Каждый файл изображения именуем в название категории на WordPress. Например, если у раздела или тега его slug имеет название — comedy, то имя файла должно быть следующим comedy.jpg. Кладём этот файл например в директорию /images/genres/.
В коде ниже мы отдельно выводим slug для категорий и тегов, потому что это делается различными способами.
Код для вывода подобных картинок будет следующим:
<img src="<?php bloginfo('url'); ?>/images/genres/<?php
if (is_category()) {
$cat = get_query_var('cat');
$yourcat = get_category ($cat);
echo ''. $yourcat->slug;
}
if (is_tag()) {
$term = get_term_by ( 'slug' , get_query_var( 'tag' ), 'post_tag' );
echo $term->slug;
}
?>.jpg" class="image_genres" title="Жанр <?php single_cat_title(); ?>" alt="Жанр <?php single_cat_title(); ?>">
</figure>
2. Когда изображения существуют только для отдельных категорий
Если надо проверить изображение на его наличие и только в случае существования файла вывести это изображение, то код будет несколько сложнее. На основании проверки наличия файла на сервере PHP код будет таким:
$title_attribute = single_cat_title( 'Жанр ', '', false );
if (is_category()) {
$cat = get_query_var('cat');
$yourcat = get_category ($cat);
$img_url = get_bloginfo('url'). '/images/genres/'. $yourcat->slug. '_s.jpg';
$f=$_SERVER['DOCUMENT_ROOT']."/images/genres/". $yourcat->slug."_s.jpg";
if (file_exists($f)) {
echo '<figure class="archive-description-img">';
echo '<img src="'.$img_url.'" class="image_genres" title="'.$title_attribute.'" alt="'.$title_attribute.'">';
echo '</figure>';
}
}
elseif (is_tag()) {
$term = get_term_by ( 'slug' , get_query_var( 'tag' ), 'post_tag' );
$img_url = get_bloginfo('url'). '/images/genres/'. $term->slug. '_s.jpg';
$f=$_SERVER['DOCUMENT_ROOT']."/images/genres/". $term->slug."_s.jpg";
if (file_exists($f)) {
echo '<figure class="archive-description-img">';
echo '<img src="'.$img_url.'" class="image_genres" title="'.$title_attribute.'" alt="'.$title_attribute.'">';
echo '</figure>';
}
}
?>
Работает он следующим образом. Проверяет наличие файла на сервере отдельно для категорий и отдельно для тегов. Если файл имеется, то выводит его, если файла нет, то ничего не выводится. И чтобы не нарушать стиль сайта, в сравнении с первым кодом, дополнительные html элементы внесены внутрь кода.