WordPress автоматически создает несколько копий загружаемых изображений разных размеров, чтобы адаптировать их под темы и устройства. Однако не всегда все эти версии нужны, а порой они занимают лишнее место на сервере и могут замедлять работу сайта. В этой статье подробно разберем, как удалить или изменить автоматические изображения в WordPress, а также приведем примеры кода и полезные плагины.
Что такое автоматические изображения в WordPress и зачем они нужны
При загрузке изображения в медиабиблиотеку WordPress создает несколько вариантов этого файла с разными размерами. По умолчанию, это миниатюра, средний размер, большой и оригинал. Размеры и количество копий зависят от настроек темы и плагинов. Это позволяет подгружать оптимальное изображение в зависимости от контекста — например, миниатюру в анонсе, а полное изображение в статье.
Однако в ряде случаев:
- Некоторые размеры не используются и только занимают место.
- Дополнительные размеры могут конфликтовать с кэшированием и CDN.
- Избыточные копии затрудняют управление файлами и резервным копированием.
Поэтому иногда возникает задача удалить ненужные копии или изменить размеры автоматически создаваемых изображений.
Как отключить создание ненужных размеров изображений в WordPress
Самый простой способ — отключить создание определенных размеров через код в functions.php вашей темы или в плагине. Например, чтобы убрать стандартные размеры 'medium_large' и 'large', используйте такой код:
function wptem_disable_image_sizes() {
remove_image_size('medium_large');
remove_image_size('large');
}
add_action('init', 'wptem_disable_image_sizes');Однако стандартные размеры, заданные в настройках WordPress, нужно отключать иначе. Чтобы полностью убрать создание определенного размера, можно сбросить его параметры через фильтр 'intermediate_image_sizes_advanced':
function wptem_filter_image_sizes($sizes) {
unset($sizes['medium']);
unset($sizes['large']);
return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'wptem_filter_image_sizes');Этот код удалит создание средних и больших изображений при загрузке новых файлов.
Отключение размеров из настроек WordPress
Также можно программно установить размеры на 0, чтобы WordPress не создавал эти копии, например:
function wptem_update_image_sizes() {
update_option('medium_size_w', 0);
update_option('medium_size_h', 0);
update_option('large_size_w', 0);
update_option('large_size_h', 0);
}
add_action('after_setup_theme', 'wptem_update_image_sizes');Однако этот метод влияет глобально и может быть неудобен, если где-то требуется средний размер.
Как удалить уже созданные автоматические изображения
Если на сайте уже есть ненужные копии изображений, их можно удалить вручную через FTP, но это рискованно и неудобно. Лучше использовать плагины:
- Regenerate Thumbnails — позволяет регенерировать миниатюры с новыми параметрами, удаляя старые.
- Force Regenerate Thumbnails — удаляет все старые миниатюры и создает новые по текущим настройкам.
- Image Cleanup — помогает найти и удалить неиспользуемые изображения, в том числе автоматические копии.
Для автоматического удаления копий через код можно использовать WP-CLI команду:
wp media regenerate --skip-deleteИли написать свой скрипт, который будет искать файлы с шаблоном имен и удалять их.
Пример функции для удаления автоматических копий изображений вручную
Ниже пример кода, который удаляет все дополнительные размеры изображения, оставляя только оригинал. Код можно добавить в functions.php и выполнить один раз.
function wptem_delete_image_copies($attachment_id) {
$meta = wp_get_attachment_metadata($attachment_id);
if (empty($meta['sizes'])) return;
$upload_dir = wp_upload_dir();
$base_dir = $upload_dir['basedir'];
$file = get_attached_file($attachment_id);
foreach ($meta['sizes'] as $size => $size_info) {
$path = pathinfo($file);
$copy_file = $path['dirname'] . '/' . $size_info['file'];
if (file_exists($copy_file)) {
unlink($copy_file); // удаляем файл
}
}
// Обновляем метаданные, убираем размеры
unset($meta['sizes']);
wp_update_attachment_metadata($attachment_id, $meta);
}
// Пример вызова для одного изображения
// wptem_delete_image_copies(123); // 123 — ID вложенияЭтот код поможет очистить лишние файлы, если они уже не нужны.
Полезные плагины для управления изображениями и их размерами
Кроме упомянутых выше, рекомендую обратить внимание на:
- Clearfy Pro — имеет опции для отключения генерации лишних миниатюр и оптимизации загрузки.
- My Popup — не связан напрямую с изображениями, но помогает эффективно показывать контент, уменьшая нагрузку на сайт.
Изменение размеров автоматически создаваемых изображений
Если вам нужно изменить размеры создаваемых копий, это делается в настройках медиафайлов WordPress (Настройки → Медиафайлы) или добавлением новых размеров через функцию add_image_size().
Пример добавления нового размера 600x400 с обрезкой:
function wptem_add_custom_image_size() {
add_image_size('wptem-custom', 600, 400, true);
}
add_action('after_setup_theme', 'wptem_add_custom_image_size');После этого можно регенерировать миниатюры, чтобы создать новые копии для уже загруженных изображений.
Для использования нового размера в теме:
the_post_thumbnail('wptem-custom');Заключение
Управление автоматическими изображениями в WordPress — важный аспект оптимизации сайта и экономии серверных ресурсов. Отключение ненужных размеров, удаление старых копий и создание новых размеров под задачи сайта помогут улучшить производительность и удобство работы с медиа.
Если хотите более удобных инструментов, рекомендуем посмотреть Clearfy Pro для тонкой настройки WordPress, включая работу с изображениями.