Почему WordPress генерирует большое количество файлов. И как их почистить

Столкнулись с тем, что хостер ругается на то, что у вас большое количество файлов? Ваш  сайт на WordPress? Место еще не кончилось, а ресурсы уже закончились? WordPress создал большое количество миниатюр (картинок)? Ситуация знакомая. Давайте почистим и сделаем так, чтобы не разрешать WordPress так поступать в дальнейшем.

Почему WordPress создает большое количество файлов

Конечно же из хороших побуждений. Внутри его есть функция add_image_size(…), которая используется в том числе различными плагинами. На каждый случай из одного изображения она создает массу миниатюр. По принципу  — «вдруг, пригодится!». Когда изображений десяток-другой — ничего страшного. Когда их сотни и тысячи — начинает заканчиваться количество дескрипторов файловой системы. И хостинг нас просит оптимизировать сайт.

Посмотрите сколько вариантов может быть создано. Изображение

Варианты миниатюр WordPress, которые он создает для каждого файла с картинкой.

Как удалить файлы прямо на сервере с помощью SSH и командной строки

Для начала давайте почистим папки WordPress. Файлы с миниатюрами расположены в каталоге /wp-content/uploads/

Почистить ненужные миниатюры нам помогут следующие команды:

Перейдем в папку

cd /your-site.ru/wp-content/uploads

Найдем, к примеру, все изображения размером 150х150 пикселей:

find ./uploads/* -iname '*-150x150.*' -ls

Если изображения нашли, другой командой их можно удалить:

find ./uploads/* -iname '*-150x150.*' -exec rm {} \;

Не забудьте иметь архив на всякий случай! Вдруг заденете что-либо лишнее!

Если нужно удалить вообще все изображения миниатюр, помогут следующие команды:

Вывести пробный список изображений (остановить вывод можно клавишами Ctrl-C)

find . -regextype posix-extended -regex ".*-[[:digit:]]{2,4}x[[:digit:]]{2,4}(@2x)?.(jpg|jpeg|png|eps|gif)" -type f

Удалить то, что ищется командой выше:

find . -regextype posix-extended -regex ".*-[[:digit:]]{2,4}x[[:digit:]]{2,4}(@2x)?.(jpg|jpeg|png|eps|gif)" -type f -exec rm {} \;

В итоге мне с более чем полумиллиона файлов Вордпресс удалось сократить количество до 150 тысяч.

Как не дать WordPress генерировать большое количество файлов

Для этого можно использовать плагин Regenerate Thumbnails. Он позволяет на лету генерировать те миниатюры, которые нужны.  И плагин Thumbnail Cleaner. Он наоборот чистит то, что уже сгенерировано.

Не лишним будет отключить создание «лишних» файлов в настройках используемой вами темы (если тема создает миниатюры). Для этого надо зайти в меню WordPress «Внешний вид» -> «Редактор тем», согласиться с тем, что делаем что-то опасное и закомментировать в коде файла functions.php те участки кода, что ответственны за создание лишних файлов (см. рис.)

Правка кода WordPress для того, чтобы не создавались миниатюры

Еще один шаг, который можно выполнить — отключение создания стандартных уменьшенных файлов изображений WordPress.

Настройки WordPress, отключающие создание файлов

Что подправить в WordPress, чтобы картинки не выводились разными разрешениями

В файл functions.php активной темы (в каталоге /wp-content/themes/название_темы) необходимо добавить следующие строчки:

/* -------------------- УДАЛЕНИЕ ЗООПАРКА КАРТИНОК */

add_filter('wp_calculate_image_srcset_meta', '__return_null' );
// Отменяем sizes - это поздний фильтр, но раннего как для srcset пока нет...
add_filter('wp_calculate_image_sizes', '__return_false', 99 );
// Удаляем фильтр, который добавляет srcset ко всем картинкам в тексте записи
remove_filter('the_content', 'wp_make_content_images_responsive' );
// Очищаем атрибуты из wp_get_attachment_image(), если по каким-то причинам они там остались...
add_filter('wp_get_attachment_image_attributes', 'unset_attach_srcset_attr', 99 );
function unset_attach_srcset_attr( $attr ){
foreach( array('sizes','srcset') as $key )
if( isset($attr[ $key ]) ) unset($attr[ $key ]);
return $attr;
}
/* --------------------- УДАЛЕНИЕ ЗООПАРКА КАРТИНОК */

 

 

Удачи вам в борьбе с лишними файлами!

Добавить комментарий