Уменьшить размер исходного изображения и не сохранять оригинал.
При загрузке изображения, если оно большого размера, wordpress сохраняет и исходное изображение, и уменьшенную копию с припиской -scaled. Как сохранять только -scaled не сохраняя исходного? Или сохранить исходное, но уменьшать его до указанных размеров? Остальные ненужные мне размеры я смог отключить. Но не могу убрать сохранение исходного.
Код ниже не помогает, исходник сохраняется.
add_filter( 'intermediate_image_sizes_advanced', 'true_remove_default_sizes' ); function true_remove_default_sizes( $sizes ) { unset( $sizes[ 'full' ] ); return $sizes; }
По-моему нужно не unset() а unlink() делать и вроде другой фильтр или экшен. Я на каком то сайте делал свои размеры scaled и удалял оригинал, сегодня посмотрю и если найду дам готовое решение.
Нет не подскажу, обманул немного я вас) Теперь самому интересно как сделать это.
Кстати, этот плагин хорошо справляется с задачей https://wordpress.org/plugins/ewww-image-optimizer/
Спасибо) Удаляет исходный размер если есть scaled. То что нужно.
Спасибо Тимуру! Закройте вопрос если решено
Прошу прощения, не понимаю как закрыть. Решение вопроса отметил.
Почему-то код выше срабатывает не всегда. Иногда срабатывает, а иногда создает две миниатюры- исходную и scaled. Не понимаю с чем это связано. Закономерность отследить не удалось. Плагинов никаких нет, а все остальное из functions.php удалил - все-равно работает через раз.
Такое было всегда. Просто в тот раз мало протестировал.
Вот с этим условием видимо нужно разобратся:
$context !== 'create'
. Похоже иногда не передается 'create' контекст и этот код поэтому не срабатывает и все работает как если его нет.Надо бы выяснить при какой загрузке такое происходит.
Еще раз попытался понять закономерность и провел несколько тестов. Все это работает на локалке, open server.
1) Вхожу в админку, медиафайлы. Добавляю картинку. На выходе не 2 картинки (scaled и миниатюра), как мне нужно, а три, одна из которых исходная. Т.е. функция не сработала.
2) Удаляю. И не обновляя страницу, добавляю еще одну картинку. Результат тот же.
3) Полностью повторил предыдущий шаг. Теперь две картинки.
Короче, я повторил так еще несколько раз. И обновлял страницу после удаления, и не удалял. И ctrl + f5, и вообще по разному. И мне пока не удалось понять закономерность. Все тесты проводились в админке, в медифайлы.
При этом исходная картинка, которая сохраняется в папке uploads, при ее открытии в медиафайлах она не раскрывается.
Никто никогда не замечал, что wordpress вместо одной исходной картинки добавляет две? Я отключил все плагины и полностью очистил functions.php от всего кода, в том числе и от кода Kama. И при добавлении картинки иногда wordpress загружает два исходника, приписывая второму '-1'. Т.е. проблема не в коде, а в самом движке? Который сохраняет то один исходник, то два. У меня wordpress 6.2.2., на open server.
Так, провел уже много тестов и вроде все нормально. Если ошибка снова всплывет, то отпишусь. Если нет, значит все нормально и проблема решена. Возможная причина проблемы и решение- старый php на сервере. Я заметил, что в консоли wordpress ругается на старый php версии 7.2 и говорит, что минимальная рекомендуемая это 7.4. Ну, т.к. больше вариантов решения проблемы нет, решил попробовать и в open server выставил 7.4. И все, кажется нормально.
И сам wordpress на 0.1 сек стал работать быстрее)) Ладно, проблема решена. Загрузил еще несколько картинок и все нормально. Код выше рабочий, можно использовать.
Неплохо ты протестировал все это дело. Спасибо!
А картинки при этом разные пробовал грузить? В ВП есть фишка, что он считывает exif данные из картинки и иногда там бывает что ориентация другая, например вверх ногами картинка. ВП при загрузке пытается сделать правильную орриентацию. Возможно в этом случае и появляются 2 оригинала. К слову, все просмоторщики, браузер в том числе, тоже считывают эти данные и всегда показывает картинку как положено (т.е. в реальности файл картинки может содержать перевернутую картинку, где в метаданных указано что она перевернута, но мы её видем как обычно). Но для ВП важно изначально иметь картинку в правильной орринтации, потому что он создает миниатюры и там все координаты считываются с левого верхнего угла, поэтому там важно чтобы картинка была правильно с орриентирована, когда с ней работают GD или imagic библиотеки...
нифига себе чудеса, я даже не знал что оно так работать может
Да, я грузил разные. Причем в разных форматах, не только jpg, но и png. Случайно загрузил даже webp и удивился, что из него он тоже миниатюр нарезал. Я уже загрузил более 50 картинок и код сработал адекватно, т.е. везде на выходе получил 2 картинки- исходная была в одном экземпляре и автоматически (из-за кода выше) удалилась. Т.е. проблема была в php 7.2 вместо нужных 7.4. Всего-то 0.2 версии, а такие проблемы. Чтобы понять причину, даже нейросеть мучил вопросами. Но она туповатая, так глубоко не копает, как иногда случайно получается залезть методом тыка)