Поддержка Проблемы и решения Отключить генерацию файлов с преьвю (ответ нетривиальный)

  • Друзья,

    Никак не могу справиться с отключением генерации картинок превью в уменьшенном размере.

    1. В настройке медиафайлов все стоит по нулям.
    2. В Functions.php добавлял

    function remove_plugin_image_sizes() {
    	remove_image_size('image-name');
    }
    add_action('after_setup_theme', 'remove_plugin_image_sizes', 999);

    Не выводит ничего.

    3. В Functions.php добавлял

    function get_image_sizes() {
    	 $unset_disabled = true;
    echo "zzz";
    	$wais = & $GLOBALS['_wp_additional_image_sizes'];
    
    	$sizes = array();
    
    	foreach ( get_intermediate_image_sizes() as $_size ) {
    		if ( in_array( $_size, array('thumbnail', 'medium', 'medium_large', 'large') ) ) {
    			$sizes[ $_size ] = array(
    				'width'  => get_option( "{$_size}_size_w" ),
    				'height' => get_option( "{$_size}_size_h" ),
    				'crop'   => (bool) get_option( "{$_size}_crop" ),
    			);
    		}
    		elseif ( isset( $wais[$_size] ) ) {
    			$sizes[ $_size ] = array(
    				'width'  => $wais[ $_size ]['width'],
    				'height' => $wais[ $_size ]['height'],
    				'crop'   => $wais[ $_size ]['crop'],
    			);
    		}
    
    		// size registered, but has 0 width and height
    		if( $unset_disabled && ($sizes[ $_size ]['width'] == 0) && ($sizes[ $_size ]['height'] == 0) )
    			unset( $sizes[ $_size ] );
    	}
    
    	return $sizes;
    }

    Не выводит ничего.

    Для каждой загружаемой картинки генерируется еще два файла:
    150х150 — ну это вроде как ОК, для связанных статей
    768х… — вот от этих хочется избавиться. Наверняка их генерирует какой-то плагин, но вот какой.

    Поиск по всем файлам выдает кучку результатов:
    А. Файлы с кешем и расширением php. В них есть прямая ссылка на 768x файлы. В настройках Super Cache ничего в отношении картинок нет.
    Б. В файле schema.php, по всей видимости это просто описание схемы.
    В. В папке плагина SimplePie. Я его не устанавливал, но судя по всему он генерирует RSS поток. Возможно, что это часть JetPack или же самого WrdPress.
    Г. В файлах index.html/index-mobile.html которые есть в десятке директорий. Видимо это какой-то кеш, но совсем непонятно какой и кто его генерит.

    Что делать непонятно. Буду рад мыслям 🙂

    • Тема изменена 7 лет, 8 месяцев назад пользователем kvv213.
Просмотр 15 ответов — с 16 по 30 (всего 31)
  • О какой «функции» Вы постоянного говорите?

    Я говорю о наборе функция с Resposible images, привнесенных в 4.4. Сюда относится не только генерация картинок, но и последующий вывод с использованием srcset.

    но при этом генерировать картинки 1024 пикселей, только в случае если я загружаю картинки с разрешением свыше 1024….
    Для этого есть настройки медиафайлов.

    Тут сразу же возникает масса вопросов к тому, как оно будет работать:
    1. В настройках медиафайлов есть три настройки картинок: миниатюра, средний размер и большой. Нужно установить размер только у большого размера? Генерация остальных не требуется, сейчас они выставлены в нули.
    2. В настройках медиафайлов каждому из размеров задается и длина и ширина, что выставлять, если требуется генерация уменьшенного размера только для Large? Причем высота меня не особо интересует, интересует ширина.
    3. Будет ли отрабатывать функция Responsive images по отображению srcset если картинка будет генериться согласно настроек медиафайлов.

    Тут сразу же возникает масса вопросов к тому, как оно будет работать:

    Что мешает сделать эксперименты, загружая разные размеры и играясь с настройками?
    Мне кажется это проще, быстрее и полезнее, чем месяцами спрашивать «как работает».

    Что мешает сделать эксперименты, загружая разные размеры и играясь с настройками?
    Мне кажется это проще, быстрее и полезнее, чем месяцами спрашивать «как работает».

    Правильнее было бы найти ответ в документации, но увы, данный момент там не отражен. Эксперимент же может привести к использованию недокументированных возможностей, который в последствии будут отменены со всеми вытекающими последствиями.

    Но в этом случае будет ли работать функция srcset ? Т.е. мне хотелось бы сохранить функционал Responsible images, но при этом генерировать картинки 1024 пикселей, только в случае если я загружаю картинки с разрешением свыше 1024….

    будет, будет. движок для srcset возьмет все стандартные сгенерированные размеры. если они есть.

    Ладно, пошел пробовать. Если не получится, разочаруюсь в неанонимных комментаторах 🙂

    Итак, попытка номер раз.

    Устанавливаю размер Large в 1024 пикселей (все остальное по нулям). Загружаю картинку в 1600 пикселей. На диске сохраняется аж 4 версии файла:
    1. Оригинал
    2. 1024
    3. 768
    4. 150

    Высота картинки берется из пропорции файла. Уже хорошо.
    Теперь надо отключить генерацию 768 и отключить максимальное ограничение в 1600 пикселей.

    Итак, код:

    // Set up the content width value based on the theme's design and stylesheet.
    if ( ! isset( $content_width ) )
    	$content_width = 1024;
    //	$content_width = 625;
    function custom_max_srcset_image_width( $max_width, $size_array ) {
        $width = $size_array[0];
        $max_width = 2048;
        return $max_width;
    }
    add_filter( 'max_srcset_image_width', 'custom_max_srcset_image_width', 10, 2 );

    Заставляет WP добавлять полный размер картинки в srcset, хотя в документации говорят об обратном, если установлен content_withd, то он будет забивать max_width.

    Осталось понять, как отключить генерацию 768.

    плять, вы издеваетесь? я вам уже 3 раза сказал, как отключить генерацию 768.

    • Ответ изменён 7 лет, 4 месяца назад пользователем Flector.

    Так, чтобы изменить размер генерации размера по умолчанию для scrset пришлось залезть в базу данных и ручками заменить параметр 768 на 1024. Ибо настройки через интерфейс WP нет (и не будя), предлагаемый путь через option_update слишком туго понятлив (можно глянуть тут https://10up.com/blog/2012/enforcing-wordpress-image-sizes-within-your-theme/).

    Результат (загрузил картинку шириной в 1400 пикселей):
    1. Получилось 3 картинки (оригинал, 1024, 150).
    2. Картинка 1024 оказалась более, чем в 2 раза больше по размеру, чем мой оригинал.

    Загружал png, оптимизированный под скриншот, а генерировалась уменьшенная картинка обычным алгоритмом.

    Пробую отглючить в интерфейсе Large размер в 1024:
    1. Все работает. Но пропадает удобство в выборе размера картинки по-умолчанию.

    В целом, могу сказать, что работает. Но процесс генерации уменьшенной картинки, которая в 3 раза больше, чем не уменьшенная — удивителен. Более того, если ваша оригинальная картинка всего на несколько пикселей больше, нежели уменьшенная, то нет никакого смысла генерировать новую уменьшенную, однако система это делает.

    то есть вы так и не удосужились пройти по ссылке, которую я вам дал? несколько строк кода отрубают генерацию 768px картинок. а 1024 генерируется стандартно у large картинок. вы же изобрели что-то несуразное. вот на хрена было лезть в базу данных?

    Далее, необходимо пересоздать все размерчики. Сделал через плагин Force Regenerate Thumbnails.
    Он все четко поудалял, что не надо, а что надо понасаздавал.

    то есть вы так и не удосужились пройти по ссылке, которую я вам дал? несколько строк кода отрубают генерацию 768px картинок. а 1024 генерируется стандартно у large картинок. вы же изобрели что-то несуразное. вот на хрена было лезть в базу данных?

    Честно говоря, пропустил ваше сообщение со ссылкой.

    Лезть в базу потребовалось вместо использования функции update_option() (так рекомендует документация), поскольку в интерфейсе нет такой настройки. Вместо вкоряивания функции, куда легче руками поправить в базе. Ищется элементарно.

    нет, вы изобрели велосипед.
    кодом отрубается генерация 768, а 1024 выставляется у large в админке в настройки медиафайлов. все. вы же отключили генерацию 1024 в админке, а картинки 768 поменяли на 1024. и смысл этого действия от меня ускользает.

    кодом отрубается генерация 768, а 1024 выставляется у large в админке в настройки медиафайлов. все. вы же отключили генерацию 1024 в админке, а картинки 768 поменяли на 1024. и смысл этого действия от меня ускользае

    Не совсем так, в админке включена генерация 1024, плюс отключена генерация 768 в настройках. Теперь генерируется 1024 в случае если картинка больше чем 1024.

    Но у меня возник вопрос, какую картинку загрузит современный браузер вот в таком случае:
    <img class="wp-image-6602" src="http://blog.kvv213.com/wp-content/uploads/2016/12/Ledokol.2016.1080p.WEB-DL.Rus_.HDCLUB.mkv_20161203_220730.265.jpg" alt="Кадр из х/ф &quot;Ледокол&quot;" width="1024" height="429" srcset="http://blog.kvv213.com/wp-content/uploads/2016/12/Ledokol.2016.1080p.WEB-DL.Rus_.HDCLUB.mkv_20161203_220730.265.jpg 1920w, http://blog.kvv213.com/wp-content/uploads/2016/12/Ledokol.2016.1080p.WEB-DL.Rus_.HDCLUB.mkv_20161203_220730.265-1024x429.jpg 1024w" sizes="(max-width: 1024px) 100vw, 1024px">

    Картинка 1920, в HTML коде она выводится с уменьшением браузером до 1024, плюс присутствует два объявления в виде 1024w и 1920w в SCRSET….

    В YB загрузилась как раз 1024 версия….

    • Ответ изменён 7 лет, 4 месяца назад пользователем kvv213.
    • Ответ изменён 7 лет, 4 месяца назад пользователем kvv213.

    Opera тоже 1024 версия
    IE10 1024 версия
    Crhome 1024
    Т.е. все отрабатывает так как и должно 🙂

Просмотр 15 ответов — с 16 по 30 (всего 31)
  • Тема «Отключить генерацию файлов с преьвю (ответ нетривиальный)» закрыта для новых ответов.