Как добавить миниатюру к любой таксономии?
Сейчас пользуюсь простым самодельным полем таксономии и туда гружу адрес изображения и вывожу в нужном месте, но это муторно, встречал на просторах код который добавляет произвольное поле со стандартным загрузчиком изображений, сейчас не найду этот код, может кто знает.
ГЛАВНОЕ
- плагины не предлагать, на них алергия
- плагины кастум филед, не интересуют
- хочу отделбный код, так как его можно подстроить под себя и выставить нужные id
- способ получения адреса миниатюры по SLUG, описаный на этом сайте - не вариант - много лишних движений
- вариант вбивания адреса в описание таксономии - это аналог предыдущих вариантов - и тем более поле описание мне нужно для других целей
Интересует что-то подобное этому полю

РЕШЕНИЕ:
спустя 10 минут
о Великий гугл и позор яндексу
ВОТ все по полочкам https://pluginrepublic.com/adding-an-image-upload-field-to-categories/
Ты пробовал код из этой статьи? Я тупо взял вставил его на тестовый сайт. Кнопки появились, а загрузка не работает - скриптов media не хватает на странице...
Он какой-то недоделанный, хотя вроде и грамотный. И скрипт вставляется на все страницы админки... Ну код - как обычно плагины пишут - мелочам внимание не уделено... Я уже не говорю, что он только для рубрик рассчитан, а как же другие таксы? А главное класс называется tax а не categorу 
я код вставлял , он у меня запустился и все заработало, но меня тоже смутило , что только для одной таксономии, все произошло как обычно , сначала установил, потом протестировал, пока думаю уйти от кода, всетаки в сторону плагин Taxonomy Thumbnail -
Сейчас у меня проблема с
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
он конфликтует и не хочет работать с Taxonomy Thumbnail и "Rich Text Tags, Categories, and Taxonomies"
Taxonomy Thumbnail - доп поле миниатюры для таксономий
ich Text Tags, Categories, and Taxonomies - описание таксономии с кнопками как в редакторе постов
Смотри решение в этой моей статье: https://wp-kama.ru/id_7686/miniatyury-dlya-elemetov-taksonomij.html
Что касается предложенного в сети кода. Изменил его:
<?php /** * Добавляет возможность загружать изображения для элементов указанных таксономий - категории, метки. * * Получить ID картинки термина: $image_id = get_term_meta( $term_id, 'term_image_id', 1 ); * Затем получить URL картинки: $image_url = wp_get_attachment_image_url( $image_id, 'thumbnail' ); * * @Author: Kama * * @ver: 1.1 */ if( ! class_exists('Term_Meta_Image') ){ class Term_Meta_Image { public $for_taxes = array('category', 'post_tag'); // для каких таксономий должен работать код ## Initialize the class and start calling our hooks and filters public function __construct(){ foreach( $this->for_taxes as $taxname ){ add_action("{$taxname}_add_form_fields", array( & $this, 'add_term_image' ), 10, 2 ); add_action("{$taxname}_edit_form_fields", array( & $this, 'update_term_image' ), 10, 2 ); add_action("created_{$taxname}", array( & $this, 'save_term_image' ), 10, 2 ); add_action("edited_{$taxname}", array( & $this, 'updated_term_image' ), 10, 2 ); add_filter("manage_edit-{$taxname}_columns", array( & $this, 'add_image_column' ) ); add_filter("manage_{$taxname}_custom_column", array( & $this, 'fill_image_column' ), 10, 3 ); } } ## Add a form field in the new category page public function add_term_image( $taxonomy ){ wp_enqueue_media(); // подключим стили медиа, если их нет add_action('admin_print_footer_scripts', array( & $this, 'add_script' ), 99 ); ?> <div class="form-field term-group"> <label for="term_image_id"> <?php _e('Image', 'hero-theme'); ?> </label> <input type="hidden" id="term_image_id" name="term_image_id" class="custom_media_url" value=""> <div id="term__image__wrapper"></div> <p> <input type="button" class="button button-secondary ct_tax_media_button" id="ct_tax_media_button" name="ct_tax_media_button" value="<?php _e( 'Add Image', 'hero-theme' ); ?>" /> <input type="button" class="button button-secondary ct_tax_media_remove" id="ct_tax_media_remove" name="ct_tax_media_remove" value="<?php _e( 'Remove Image', 'hero-theme' ); ?>" /> </p> </div> <?php } ## Edit the form field public function update_term_image( $term, $taxonomy ){ wp_enqueue_media(); // подключим стили медиа, если их нет add_action('admin_print_footer_scripts', array( & $this, 'add_script' ), 99 ); $image_id = get_term_meta( $term -> term_id, 'term_image_id', true ); ?> <tr class="form-field term-group-wrap"> <th scope="row"> <label for="term_image_id"><?php _e( 'Image', 'hero-theme' ); ?></label> </th> <td> <input type="hidden" id="term_image_id" name="term_image_id" value="<?php echo $image_id; ?>"> <div id="term__image__wrapper"> <?php if( $image_id ){ echo wp_get_attachment_image( $image_id, 'thumbnail' ); } ?> </div> <p> <input type="button" class="button button-secondary ct_tax_media_button" id="ct_tax_media_button" name="ct_tax_media_button" value="<?php _e( 'Add Image', 'hero-theme' ); ?>" /> <input type="button" class="button button-secondary ct_tax_media_remove" id="ct_tax_media_remove" name="ct_tax_media_remove" value="<?php _e( 'Remove Image', 'hero-theme' ); ?>" /> </p> </td> </tr> <?php } ## Save the form field public function save_term_image( $term_id, $tt_id ){ if( isset( $_POST['term_image_id'] ) && '' !== $_POST['term_image_id'] ){ $image = $_POST['term_image_id']; add_term_meta( $term_id, 'term_image_id', $image, true ); } } ## Update the form field value public function updated_term_image( $term_id, $tt_id ){ if( isset( $_POST['term_image_id'] ) && '' !== $_POST['term_image_id'] ){ $image = $_POST['term_image_id']; update_term_meta( $term_id, 'term_image_id', $image ); } else update_term_meta( $term_id, 'term_image_id', '' ); } ## Add script public function add_script(){ // выходим если мы не на нужной странице таксономии //$cs = get_current_screen(); //if( ! in_array($cs->base, array('edit-tags','term')) || ! in_array($cs->taxonomy, (array) $this->for_taxes) ) // return; ?> <script> jQuery(document).ready( function($){ function ct_media_upload( button_class ){ var _custom_media = true, _orig_send_attachment = wp.media.editor.send.attachment; $('body').on('click', button_class, function(e){ var button_id = '#'+$(this).attr('id'); var send_attachment_bkp = wp.media.editor.send.attachment; var button = $(button_id); _custom_media = true; wp.media.editor.send.attachment = function( props, attachment ){ if( _custom_media ){ $('#term_image_id').val(attachment.id); $('#term__image__wrapper').html('<img class="custom_media_image" src="" style="margin:0;padding:0;max-height:100px;float:none;" />'); $('#term__image__wrapper .custom_media_image').attr('src',attachment.sizes.thumbnail.url).css('display','block'); } else { return _orig_send_attachment.apply( button_id, [props, attachment] ); } } wp.media.editor.open(button); return false; }); } ct_media_upload('.ct_tax_media_button.button'); $('body').on('click','.ct_tax_media_remove',function(){ $('#term_image_id').val(''); $('#term__image__wrapper').html('<img class="custom_media_image" src="" style="margin:0;padding:0;max-height:100px;float:none;" />'); }); // Thanks: http://stackoverflow.com/questions/15281995/wordpress-create-category-ajax-response $(document).ajaxComplete(function( event, xhr, settings ){ var queryStringArr = settings.data.split('&'); if( $.inArray('action=add-tag', queryStringArr) !== -1 ){ var xml = xhr.responseXML; $response = $(xml).find('term_id').text(); if( $response != '' ){ $('#term__image__wrapper').html(''); // Clear the thumb image } } }); }); </script> <?php } ## Добавляет колонкку картинки в таблицу терминов public function add_image_column( $columns ){ // подправим ширину колонки через css add_action('admin_notices', function(){ echo '<style>.column-image{ width:60px; text-align:center; }</style>'; }); $num = 1; // после какой по счету колонки вставлять новые $new_columns = array( 'image'=>'Картинка' ); return array_slice( $columns, 0, $num ) + $new_columns + array_slice( $columns, $num ); } public function fill_image_column( $string, $column_name, $term_id ){ // если есть картинка if( $image_id = get_term_meta( $term_id, 'term_image_id', 1 ) ){ $string = '<img src="'. wp_get_attachment_image_url( $image_id, 'thumbnail' ) .'" width="40" height="40" alt="" />'; } return $string; } } new Term_Meta_Image(); // init }Подключается код в functions.php (начальную <?php нужно удалить в этом случае) или из него можно сделать плагин.
начинаю потихоньку тестить ,