Intereting Posts
Получить идентификатор изображения в медиа-загрузке Вставка изображений удаляет атрибут класса Перенаправление входа из моего основного домена в субдомен Опубликовать авто в Gplus с помощью Public Использование родительской переменной slug для отображения правильного подменю не работает должным образом Какой лучший способ использовать Bootstrap внутри панели администратора? Продукт с изменением по умолчанию – фотография WooCommerce Как добавить nofollow на весь сайт Обновить страницу с помощью Cron после публикации любой публикации Как получить тип oEmbed (аудио, видео, изображение и т. Д.)? Как сохранить поля имени электронной почты для комментариев? Повторное использование javascripts из плагинов в теме Отображать пользовательские теги на страницах с определенным родителем страницы Population Select Box 2 на основе опции, выбранной в поле выбора 1 Невозможно переписать постоянные ссылки для пользовательской таксономии и типа сообщения, получить 404s. Использование плагина

Новая версия размера изображения только для файла Featured Image

Меня беспокоит слишком много файлов, созданных при добавлении нового размера изображения.

Все загруженные файлы будут генерировать новый размер, мне нужен определенный размер изображения только для файла, установленного как изображение Fetured, есть ли способ сделать это? ,

Миниатюра , среда и т. Д. В порядке, но нет необходимости создавать новый размер для каждого файла.

Я думаю, что это должно сработать сразу после установки Featured Image.

Solutions Collecting From Web of "Новая версия размера изображения только для файла Featured Image"

Исследование

Вопрос Filter For Featured Image приводит к этому ответу: Как подключить update_post_meta и delete_post_meta? ,

В сочетании с мелкой глобальной переменной ( $_wp_additional_image_sizes ), показанной здесь: Как получить список всех возможных размеров эскизов, установленных в теме , привести нас к коду, который ловит действие «Использовать как признанное изображение».

введите описание изображения здесь


Код

Этот код запускается при каждом щелчке «Использовать как изображение». Затем он проходит через все дополнительные размеры изображения и удаляет их, сохраняя по умолчанию WordPress (миниатюра, средний, большой).
Протестируйте этот код, прежде чем перейти в LIVE.
Код GPL. Гарантия не предоставляется. Проверьте комментарии.

 /** DRAWBACK - Setting the Featured Image can be done ONLY ONCE -- When first setting the FI, all other attachments intermediate sizes will be deleted -- If swapping the FI, the first image's remaining intermediate will be deleted, and the second DON'T HAVE any additional intermediates! TODO: Restoring deleted intermediates - this post may have an answer: https://wordpress.stackexchange.com/a/8082/12615 */ add_action( 'added_post_meta', 'wpse_57369_selective_delete_intermediates', 10, 4 ); add_action( 'updated_post_meta', 'wpse_57369_selective_delete_intermediates', 10, 4 ); /** * Catches the "Used as featured image" action */ function wpse_57369_selective_delete_intermediates( $meta_id, $post_id, $meta_key, $meta_value ) { if ( '_thumbnail_id' == $meta_key ) { global $_wp_additional_image_sizes; /** * The global holds all additional image sizes and contains this: * array( ['post-thumbnail'] => array( ['width'] => 1000 ['height'] => 288 ['crop'] => 1 ) ['large-feature'] => array( ['width'] => 1000 ['height'] => 288 ['crop'] => 1 ) ['small-feature'] => array( ['width'] => 500 ['height'] => 300 ['crop'] => ) ) */ // Populate a new array with single values based on the keys of the global $all_sizes = array(); foreach ( $_wp_additional_image_sizes as $key => $value ) { $all_sizes[] = $key; } // Retrieve all attachments of current post/page/cpt $all_attachs = get_children( array( 'post_parent' => $post_id, 'post_type' => 'attachment', 'numberposts' => -1, 'post_mime_type' => 'image' )); // Determine upload path $uploads = wp_upload_dir(); $path_pos = strpos( $uploads['basedir'], 'wp-content/' ); // start position of the string $base_path = substr( $uploads['basedir'], 0, $path_pos); // path before wp-content, eg, /etc/public_html/ // Loop through all attachments foreach ( $all_attachs as $key => $value ) { // This is the featured image if ( $key == $meta_value) { wpse_57369_delete_files( $key, $all_sizes, $base_path, 'small-feature' ); } // Rest of attached images else { wpse_57369_delete_files( $key, $all_sizes, $base_path, false ); } } } } /** * Delete all custom intermediates files, except when $keep_size is defined */ function wpse_57369_delete_files( $ID, $all_sizes, $base_path, $keep_size=false ) { foreach ( $all_sizes as $intermediate ) { /* We need to know the image url [0] and if it exists [3] */ $the_url = wp_get_attachment_image_src( $ID, $intermediate ); /* If additional image exist, go ahead */ if( $the_url[3] ) { // Path of the image to be deleted $url_pos = strpos( $the_url[0], 'wp-content/' ); $url_end = substr( $the_url[0], $url_pos); // Delete all intermediates if ( !$keep_size ) { // loga( $ID . ' - ' . $intermediate, 'delete-me'); unlink( $base_path . $url_end ); } // Featured image, Selective delete else { // Delete intermediate if ( $intermediate != $keep_size ) { // loga( $ID . ' - ' . $intermediate, 'delete-me'); unlink( $base_path . $url_end ); } // Keep intermediate, no action needed // PROBABLY, RESTORING AN INEXISTENT IMAGE SIZE MUST BE DONE HERE else { // loga( $ID . ' - ' . $intermediate, 'keep-me'); } } } } } function loga() { // This is the FireBug FirePHP console call // http://www.firephp.org/HQ/Use.html } 

результат

Содержимое папки после загрузки изображений, пока еще не установлено изображение функции
введите описание изображения здесь

Содержание папок после установки fondo-restauraciones в качестве предпочтительного изображения
введите описание изображения здесь


Другие примечания

Для работы со всеми дополнительными размерами изображений (по умолчанию и по умолчанию для WordPress) используйте:

 $all_sizes = get_intermediate_image_sizes(); /** * $all_images contains all intermediate image sizes, WordPress default and declared custom sizes: * array( [0] => 'thumbnail' [1] => 'medium' [2] => 'large' [3] => 'post-thumbnail' [4] => 'large-feature' [5] => 'small-feature' ) */ 

Вы можете получить отображаемое изображение src / source, используя следующие аргументы в основной функции (где $post следует вызывать с global $post спереди):

 wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' ); 

Как это использовать

Я написал бесплатный плагин на GitHub , называемый «Динамическое изменение размера изображения».

Вы можете скачать и использовать его бесплатно.

Короткий код

Поместите [dynamic_image] в свой контент. В коротком коде есть четыре аргумента:

  • src Полный путь к изображению в каталоге загрузки или идентификатор
  • width Целочисленное значение
  • height Целое значение
  • classes Css – разделенные пробелом

… но есть и:

Тег шаблона

 global $post; // Use the template tag with ID *OR* full path dynamic_image_resize( array( // The full path to the image in your uploads folder 'src' => wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' ); // OR: the ID 'src' => get_post_thumbnail_id( $post->ID ) ,'width' => 60 ,'height' => 100 ,'classes' => 'some classes to align and style the image' ) ); 

Просто сбрасывайте его в своем шаблоне, где вам это нужно, и finito.

Примечание: Он основан на идее / предложении Константина Ковшенина.


Примечание:

Если вы хотите по умолчанию пропускать / отключать размеры изображения по умолчанию, просто добавьте 0 качестве width и height в настройках администратора.