Проверка, измерение и отключение размеров изображений
Что стоит в списке — и откуда оно берётся
Таблица — это не встроенный перечень, а состояние твоей установки: Kakapo сам запрашивает у WordPress зарегистрированные размеры и берёт габариты из дополнительных размеров либо из опций ядра в разделе Настройки › Медиафайлы. То, что твоя тема или плагин регистрирует кодом, попадает туда автоматически.
Столбец «Обрезка» различает два случая: «пропорционально» означает, что WordPress уменьшает изображение и сохраняет соотношение сторон; «жёсткая обрезка» означает, что оно обрезается ровно до этих размеров — если задано выравнивание, оно стоит рядом (например, «жёсткая обрезка (слева вверху)»).
Столбец «Происхождение» намеренно грубый. У размеров ядра источник указан точно, всё остальное называется «Тема или плагин». Точнее не получится: при регистрации размера WordPress нигде не фиксирует, кто его зарегистрировал. Размер, который ты отключил и который тем временем никто больше не регистрирует (типично после смены темы), всё равно остаётся в списке — с пометкой «сейчас не зарегистрирован». Иначе ты никогда не смог бы включить его снова.
Сначала измерить, потом решать
Пока ты не выполнил измерение, в столбце «Занято» стоит тире. Так задумано: оценочные числа здесь были бы бесполезны. По кнопке «Измерить сейчас» запускается проход по папке uploads. Каждый файл учитывается со своим реальным размером, а привязка к размерам изображений идёт через медиатеку — там для каждого вложения указано, какой файл к какому размеру относится. По имени файла это бы не вышло, потому что пропорциональные размеры дают разные габариты в зависимости от соотношения сторон.
Результат делится на производные размеры, резервные копии обработки изображений (которые WordPress сам сохраняет после обрезки или поворота), исходные файлы изображений, файлы без подходящей записи в медиатеке и файлы, не являющиеся изображениями (PDF, ZIP, файлы кеша других плагинов).
Два особых случая в таблице стоит знать. «использует файл размера с такими же габаритами» означает: у двух размеров одинаковые габариты, и WordPress создаёт для них только один файл. Такой размер не занимает ничего своего, поэтому отключение здесь ничего и не экономит. А «× файл отсутствует» означает: медиатека знает этот файл, а на диске его больше нет.
Измерение выполняется в бюджете времени в 20 секунд и читает медиатеку порциями по 200 записей. Если на большом объёме времени не хватает, результат помечается как неполный, а числа считаются нижними границами — без экстраполяции. Тогда просто измерь ещё раз. При более чем 120 000 файлов изображений Kakapo опускает разбивку остатка на оригиналы и осиротевшие файлы, чтобы не переполнить память; остальные числа остаются измеренными полностью.
Отключение: что оно даёт, а что нет
Отключение означает: этот размер больше не создаётся. Это действует со следующей загрузки и при повторном создании после редактирования изображения. Задним числом это не действует — плагин не удаляет файлы изображений. Всё, что уже лежит в папке uploads, там и остаётся, потому что медиатека продолжает на это ссылаться, а у темы, которая размер всё же использует, иначе появились бы пробелы.
Если страница позже запросит отключённый размер, WordPress отдаст ближайший имеющийся файл, чаще всего оригинал. Страница остаётся целой, но загружает в этом месте больше байт. Именно поэтому отключение окупается прежде всего у тех размеров, которые твой сайт всё равно нигде не отдаёт.
Четыре размера особенные: thumbnail, medium, medium_large и large. К ним обращается сам WordPress — предпросмотр в медиатеке, выбор при вставке, srcset. В таблице у них стоит пометка «жёстко используется ядром», и перед отключением задаётся уточняющий вопрос. Запрета нет, ты просто должен знать, что делаешь.
Самые выгодные кандидаты — обычно два дополнительных размера ядра, 1536x1536 и 2048x2048: варианты 2× и тем самым самые большие производные файлы вообще. Если твоему сайту не нужна выдача для Retina, здесь ты сэкономишь больше всего. Всё в любой момент обратимо — «Включить» снова вводит размер в работу, начиная со следующей загрузки.
Обработка изображений: почему отключённые размеры вылетают из записи
Если ты обрезаешь изображение в WordPress или поворачиваешь его, ядро создаёт размеры заново и сводит результаты со старыми данными. Для отключённых размеров при этом не возникает ничего нового — их старая запись, стало быть, уцелела бы и продолжала указывать на файл, каким он был ДО редактирования. После поворота в этом размере по-прежнему выдавалось бы неповёрнутое изображение; а тот, кто выбирает кадрирование, чтобы убрать что-то с изображения, оставил бы это в сети именно в этих размерах.
Поэтому после реального редактирования Kakapo удаляет запись из данных медиатеки. Строго ограниченно: только для отредактированного вложения и только если главный файл действительно изменился (другое имя или другие габариты). Редактирование «только миниатюра» остаётся нетронутым, как и любое другое сохранение. И здесь ничего не удаляется — старый файл остаётся лежать и при следующем измерении появляется в строке «Без записи в медиатеке».
Если что-то выглядит не так, как ожидалось
«Состояние покоя» над списком: без действующей лицензии Kakapo вообще не регистрирует фильтры, и отключённые размеры продолжают создаваться. Список в этом случае показывает твою настройку, а не то, что происходит на деле.
«Папка uploads не найдена»: измерение обрывается с тем путём, который сообщил WordPress. Чаще всего настройка uploads больше не верна или папка не читается для PHP.
«Дерево файлов не удалось прочитать полностью»: подпапка была нечитаема или исчезла во время измерения. Проход продолжается, но результат помечается как неполный, вместе с причиной. Символические ссылки пропускаются, чтобы один и тот же файл не считался дважды.
«Больше не зарегистрированные размеры на диске»: там стоят размеры, для которых файлы существуют, но которые больше не заявляет ни одна тема и ни один плагин — почти всегда след смены темы. Заново они уже не создаются; убирать их при необходимости придётся тебе самому, Kakapo их не трогает.