Проблема: избыточное создание больших размеров изображений в WordPress
При загрузке изображений WordPress автоматически генерирует несколько копий разных размеров, заданных в настройках и темой. Некоторые темы и плагины добавляют свои размеры, которые могут быть избыточны, занимать много места и замедлять сайт. Если тема не поддерживает удаление этих размеров через фильтры, возникает задача: как убрать ненужные большие размеры изображений?
Диагностика: как определить, какие размеры создаются
Для начала нужно узнать, какие размеры изображений создаются при загрузке. Это можно сделать с помощью функции wp_get_registered_image_subsizes() (доступно с WP 5.3) или просмотром настроек в functions.php и плагинах.
function wplink_show_image_sizes() {
$sizes = wp_get_registered_image_subsizes();
echo '<pre>';
print_r( $sizes );
echo '</pre>';
}
add_action( 'admin_notices', 'wplink_show_image_sizes' );Этот код добавьте временно в файл functions.php активной темы. На странице админки появится список зарегистрированных размеров с параметрами.
Анализ списка
Обратите внимание на размеры с высоким разрешением (например, 2048×2048, 1536×1536), которые обычно добавляются WordPress по умолчанию, а также размеры от темы и плагинов. Именно их стоит рассмотреть для удаления.
Пошаговое решение: отключение и удаление больших размеров
1. Отключение стандартных больших размеров в WordPress
Для отключения стандартных размеров 1536×1536 и 2048×2048 используйте фильтр intermediate_image_sizes_advanced. Добавьте в functions.php следующий код:
function wplink_disable_large_image_sizes( $sizes ) {
unset( $sizes['1536x1536'] );
unset( $sizes['2048x2048'] );
return $sizes;
}
add_filter( 'intermediate_image_sizes_advanced', 'wplink_disable_large_image_sizes' );2. Удаление размеров, добавленных темой или плагинами
Если тема или плагины зарегистрировали свои размеры через add_image_size(), их можно удалить функцией remove_image_size(). Важно запускать ее после того, как размеры добавлены — на хуке init с приоритетом 20 или выше.
function wplink_remove_custom_image_sizes() {
remove_image_size( 'custom-size-name' ); // замените на реальное имя размера
}
add_action( 'init', 'wplink_remove_custom_image_sizes', 20 );3. Очистка существующих изображений
Отключение создания размеров не удалит уже созданные файлы на сервере. Чтобы удалить их, используйте плагин Media Cleaner или вручную через FTP, ориентируясь на имена файлов с суффиксами размеров.
Проверка результата
После внесения изменений:
- Загрузите новое изображение через медиабиблиотеку.
- Проверьте папку
wp-content/uploads/на сервере — должны отсутствовать файлы больших размеров (например,image-2048x2048.jpg). - Проверьте сайт, что изображения отображаются корректно.
- В админке используйте
wp_get_registered_image_subsizes()для контроля отключенных размеров.
Частые ошибки и как их исправить
- Размеры не отключаются: скорее всего,
remove_image_size()вызывается слишком рано. Используйте приоритет 20 и выше на хукеinit. - Удалены не все файлы старых размеров: необходимо вручную удалить или использовать плагин для очистки.
- Потеря качества на сайте: убедитесь, что отключаете только ненужные размеры, а основные, используемые для отображения — оставляете.
Практические советы по оптимизации и безопасности
- Не удаляйте размеры, используемые в мобильных и ретина-разрешениях, если тема их применяет.
- Регулярно чистите старые неиспользуемые медиафайлы с помощью плагинов типа Clearfy Pro (ссылка на Clearfy Pro) — это помогает оптимизировать хранилище и безопасность.
- Резервное копирование перед массовым удалением файлов — обязательное условие.
Сравнение вариантов удаления больших размеров изображений
| Метод | Преимущества | Недостатки |
|---|---|---|
Отключение через intermediate_image_sizes_advanced | Легко реализовать, работает для стандартных размеров | Нельзя отменить размеры темы или плагинов |
Удаление через remove_image_size() | Контроль над размерами, добавленными кодом | Нужно знать имена размеров, нельзя удалить стандартные |
| Удаление файлов вручную или плагином | Физически освобождает место | Риск удаления нужных файлов, требует резервных копий |