Давайте напишем небольшой плагин, который добавляет в термины таксономии поле выбора изображения.
Начиная с версии движка 4.4 CMS WordPress представляет API для работы с мета данными таксономии. С этого момента у словарей появляется своё мета-хранилище. Здесь мы будем сохранять значения поля.
Структура плагина
Я оформил код в виде плагина, а вы, скорее всего, будете использовать его кусочки в своей теме оформления, потому сначала посмотрим структуру кода в целом, чтобы было понятно как работает программа.
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58  | 
						<?php /* Plugin Name: TaxonomyImage Description: Example of taxonomy field Requires at least: 4.4 Version: 1.0 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html */ if (!class_exists('TaxonomyImage')) { class TaxonomyImage  {    //в конструкторе объявим все необходимые зацепки    public function __construct()    {       add_action( 'init', array($this, 'init'), 0);       if (function_exists('add_action')) {          if (is_admin()) {             add_action('edit_term', array($this, 'tax_pic_save'));             add_action('create_term', array($this, 'tax_pic_save'));             add_action('mytax_add_form_fields', array($this, 'tax_pic_edit'));             add_action('mytax_edit_form_fields', array($this, 'tax_pic_edit'));          }       }    }    public function tax_pic_edit($taxonomy)     {       //добавляем поле картинки в форму       ...    }     public function tax_pic_save($term_id)    {       //сохранение данных поля в базе       ...    }    public function get_pic_url($term_id)     {       //получение URL картинки из базы по ID термина       ...    }    public function init()     {       register_taxonomy( 'mytax', array('post'), array( 'hierarchical' => true,           'labels' => array('name' => 'Пример словаря'),          'query_var' => true, 'rewrite' => true, 'show_tagcloud' => true,           'show_in_quick_edit' => true, 'show_admin_column' => true, ) );          } }} //создадим глобальный объект для работы с плагином global $TaxonomyImage_obj; $TaxonomyImage_obj = new TaxonomyImage();  | 
					
Для полноты примера я добавил регистрацию таксономии, хотя можно было добавить поле в один из базовых словарей.
Сохранение значения
При сохранении термина будет вызываться функция tax_pic_save($term). Её устройство очень простое.
| 
					 1 2 3 4 5  | 
						   public function tax_pic_save($term_id)     {       if (isset($_POST['tax_pic']))          update_term_meta($term_id, 'pic', $_POST['tax_pic']);    }  | 
					
Наш плагин может выполнять чтение значения из базы.
| 
					 1 2 3 4  | 
						   public function get_pic_url($term_id)     {       return get_term_meta($term_id, 'pic', true);    }  | 
					
Добавление поля в форму редактора
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41  | 
						   public function tax_pic_edit($taxonomy) {       wp_enqueue_style('thickbox');       wp_enqueue_script('thickbox');       wp_enqueue_script('media-upload');       if(empty($taxonomy)) {          echo '<div class="form-field">  <label for="tax_pic">Изображение</label>  <input type="text" name="tax_pic" class="tax_pic" value="" />  <input type="button" class="select-img" id="tax_pic" value="Выбрать" />   </div>';       } else {          $pic_url = get_term_meta($taxonomy->term_id, 'pic', true);           echo '<tr class="form-field">  <th scope="row" valign="top"><label for="tax_pic">Изображение</label></th>  <td><input type="text" name="tax_pic" class="tax_pic" value="' . $pic_url . '" />  <input type="button" class="select-img" id="tax_pic" value="Выбрать" />  <input type="button" class="clear-img" value="Очистить" />  <br />';          if(!empty($pic_url))             echo '<img src="'. $pic_url. '" style="max-width:200px; border: 1px solid #ccc;padding: 5px;box-shadow: 5px 5px 10px #ccc;margin-top: 10px;"> </td></tr>';        }       echo ' <script type="text/javascript">    jQuery(document).ready(function() {       jQuery("#tax_pic").on(\'click\', function() {          tb_show("", "media-upload.php?type=image&TB_iframe=true");          return false;       });       jQuery("input.clear-img").on(\'click\', function() {          jQuery("input.tax_pic").val( "" );       });       window.send_to_editor = function(html) {          jQuery("input.tax_pic").val( jQuery("img",html).attr("src") );          tb_remove();       }    });  </script>';  }  | 
					
Шаблон даёт три возможности: ввод значения поля вручную (URL картинки), выбор адреса картинки или миниатюры из медиа-библиотеки, а также возможность очистить поле. Выбор URL из библиотеки сайта реализован через использование штатного диалога.

Готовые решения
Если создавать свой плагин — не ваш путь, то есть готовые решения. Краткий обзор плагинов для вставки изображения в редактор таксономии.

