WordPress по умолчанию при загрузке изображений создает несколько копий разных размеров, что позволяет автоматически подставлять оптимальный размер для разных мест сайта. Но с ростом числа загруженных медиафайлов это приводит к существенному увеличению занимаемого места на сервере. В этой статье мы рассмотрим, как изменить размеры изображений в WordPress без создания дополнительных копий, а также как управлять уже созданными размерами с помощью кода и плагинов.
Почему WordPress создает новые копии изображений и как это влияет на сайт
При загрузке изображения WordPress автоматически генерирует несколько копий с предустановленными размерами: thumbnail, medium, large и другие, которые могут задаваться темой и плагинами. Это удобно для автоматического выбора нужного размера в шаблонах, но приводит к:
- Занятию лишнего дискового пространства на сервере.
- Увеличению времени резервного копирования.
- Усложнению управления медиафайлами.
Если вы хотите использовать только один оригинал и изменять размеры на лету, можно отключить автоматическую генерацию дополнительных размеров и использовать динамическое масштабирование.
Как отключить автоматическое создание новых размеров изображений
Чтобы запретить WordPress создавать копии при загрузке, нужно сбросить размеры через фильтры. Добавьте следующий код в файл functions.php вашей темы или в плагин-«снапшот»:
function wpfinder_disable_image_sizes( $sizes) {
return array();
}
add_filter('intermediate_image_sizes_advanced', 'wpfinder_disable_image_sizes');
// Отключаем стандартные размеры
update_option('thumbnail_size_w', 0);
update_option('thumbnail_size_h', 0);
update_option('medium_size_w', 0);
update_option('medium_size_h', 0);
update_option('large_size_w', 0);
update_option('large_size_h', 0);
Этот код запретит создание дополнительных размеров при загрузке новых файлов. Однако уже загруженные копии останутся и их нужно удалить вручную или с помощью плагинов.
Удаление уже созданных дополнительных копий
Для очистки старых копий можно использовать плагин Media Cleaner или Clearfy Pro. Они анализируют медиа-библиотеку и позволяют безопасно удалить неиспользуемые копии изображений.
Динамическое изменение размера изображений с помощью плагинов
Чтобы не создавать новые физические файлы, а получать нужный размер изображения на лету, можно использовать специализированные плагины:
- Adaptive Images for WordPress — подставляет изображения нужного размера в зависимости от устройства пользователя.
- Imsanity — автоматически масштабирует загружаемые изображения до заданных параметров, не создавая лишних копий.
- WP Retina 2x — создает копии для Retina-дисплеев, но позволяет гибко управлять размерами.
Кроме того, можно использовать сервисы CDN, которые преобразуют изображения на лету, избавляя от необходимости создавать копии на сервере.
Пример функции для динамического масштабирования изображений через PHP
Если вы хотите реализовать динамическое изменение размеров изображений без плагинов, можно использовать следующий пример функции, которая создает уменьшенную копию при первом запросе и возвращает ее URL:
function wpfinder_get_resized_image_url( $image_path, $width, $height ) {
$upload_dir = wp_upload_dir();
$full_image_path = $upload_dir['basedir'] . '/' . $image_path;
if ( ! file_exists( $full_image_path ) ) {
return false;
}
$resized_dir = $upload_dir['basedir'] . '/resized';
if ( ! file_exists( $resized_dir ) ) {
wp_mkdir_p( $resized_dir );
}
$path_info = pathinfo( $image_path );
$resized_image_name = $path_info['filename'] . "-{$width}x{$height}." . $path_info['extension'];
$resized_image_path = $resized_dir . '/' . $resized_image_name;
if ( ! file_exists( $resized_image_path ) ) {
$image = wp_get_image_editor( $full_image_path );
if ( is_wp_error( $image ) ) {
return false;
}
$image->resize( $width, $height, true );
$image->save( $resized_image_path );
}
$resized_image_url = $upload_dir['baseurl'] . '/resized/' . $resized_image_name;
return $resized_image_url;
}
Используйте функцию так:
$url = wpfinder_get_resized_image_url('2024/06/example.jpg', 300, 200);
echo '<img src="' . esc_url( $url ) . '" alt="Пример"/>';
Это позволит создать и использовать только нужный размер без генерации множества копий при загрузке.
Управление размерами изображений через настройки темы и плагинов
Некоторые темы и плагины WordPress добавляют свои собственные размеры изображений. Чтобы видеть и управлять всеми размерами, можно использовать плагин Clearfy Pro, который позволяет отключать ненужные размеры и удалять неиспользуемые.
Также можно регистрировать собственные размеры через хук add_image_size и управлять ими по необходимости:
add_image_size( 'wpfinder-custom-size', 400, 300, true );
Используйте эту размер в шаблонах:
the_post_thumbnail( 'wpfinder-custom-size' );
Это позволит контролировать, какие размеры создаются, и оптимизировать использование дискового пространства.