Обычно для добавления изображения (миниатюры) таксономии импользую плагин Advanced Custom Fields. Плагин хороший, но довольно тяжеловат, т.к. является мощным многозадачным плагином. Есть более легковесная альтернатива — плагин taxonomy term image master, состоящий всего из 2-х небольших файлов.
Скачать плагин можно здесь
Функционал taxonomy term image master
По-умолчанию плагин добавляет поле-изображение для category, изменить это можно 2-мя способами:
изменив таксономию
function the_term_image_taxonomy( $taxonomy ) { // use for tags instead of categories return 'post_tag'; } add_filter( 'taxonomy-term-image-taxonomy', 'the_term_image_taxonomy' );
либо указав несколько таксономий
function the_term_image_taxonomy( $taxonomy ) { // use for tags and categories return array( 'post_tag', 'category' ); } add_filter( 'taxonomy-term-image-taxonomy', 'the_term_image_taxonomy' );
Вывести изображение
Одной из привлекательных сторон данного плагина является его интеграция в wordpress, т.е. он вызывается и работает на основе служебных функций WP.
Вывести изображение в виде миниатюры, с всеми присущими ей атрибутами
$term = get_term( 123, 'category' ); if ( $term->term_image ) { echo wp_get_attachment_image( $term->term_image, 'full' ); } либо так: $term = get_queried_object(); if ( $term->term_image ) { echo wp_get_attachment_image( $term->term_image, 'full' ); }
Если нам нужно получить только ссылку на изображение, то нужно выводить так
<?php echo wp_get_attachment_url( $product_tag->term_image, 'large' ); ?>
Единственным ограничением данного решения является, то что поле-изображение мы можем задавать только одно. Ведь фактически плагин создает миниатюру термина таксономии.
Еще плагины: изображение и цвет таксономии
WP Term Images (3000) и WP Term Colors (2000) работают по немного другому принципу нежели предыдущее решение.
Вывести цвет термина таксономии:
<?php echo get_term_meta( $childcat->cat_ID, 'color', true ); ?>
Вывести изображение термина таксономии:
<?php $image_id = get_term_meta( $childcat->cat_ID, 'image', true ); $image_data = wp_get_attachment_image_src( $image_id, 'full' ); echo '<img src="'.$image_data[0].'">'; ?>