Вопрос или проблема
У меня есть сайт с 180 000 изображениями. Большинство из них были добавлены через SFTP, а затем добавлены в библиотеку медиа с помощью плагина Add from Server (который создает пост изображения и генерирует миниатюры для WordPress и темы). Я использовал WP-CLI для wp media regenerate
и wp media regenerate --only-missing
и seq 15800 16150 | xargs wp media regenerate
после изменения размеров миниатюр или тем.
Моя текущая тема имеет опцию настройки двух миниатюр Woocommerce в Customizer. Когда я сделал это вчера, WordPress показал мне сообщение, что он регенерирует миниатюры в фоновом режиме. Я отменил это, зная, что WP-CLI будет быстрее для большой медиатеки.
Затем я запустил wp media regenerate --only-missing
. Я не закончил регенерацию всей медиатеки из-за грозы, но когда я посмотрел некоторые из каталогов (через FTP), появились два новых размера миниатюр, но старые два размера тоже остались – они не были удалены.
Я запустил seq 15800 16150 | xargs wp media regenerate
на части этих изображений, которые были регенерированы прошлой ночью, чтобы увидеть, удалит ли это старые размеры, но это также не сработало.
Если я запущу wp media regenerate --yes
, что займет около 50-55 часов, удалит ли это старые изображения?
Когда я использовал wp media regenerate в прошлом, я думал, что это удаляет старые, измененные размеры миниатюр. Я неправильно помню или это похоже на то, что у меня может быть какой-то конфликт?
Ответ или решение
Опираясь на предоставленную информацию и контекстуальные теги, вероятно, что вы заинтересованы в поведении WP-CLI команды "wp media regenerate" в отношении удаления измененных размеров миниатюр. Для того чтобы дать исчерпывающий ответ, важно рассмотреть как функционирует WP-CLI с точки зрения управления медиафайлами в WordPress.
Теория
Команда wp media regenerate
в WP-CLI используется для пересоздания миниатюр для всех изображений в медиабиблиотеке WordPress. Это полезно после изменения размеров миниатюр в настройках темы или после активации новой темы, которая использует другие размеры миниатюр.
Подробно разбирая наличие различных параметров команды:
-
wp media regenerate
– генерирует миниатюры для всех изображений в медиабиблиотеке. Однако, по умолчанию, эта команда не удаляет существующие файлы миниатюр, которые больше не нужны. Она только создает новые миниатюры, а старые оставляет. -
wp media regenerate --only-missing
– пересоздает только те миниатюры, которые отсутствуют. Если какие-то миниатюры уже существуют и не соответствуют текущим размерам, они не будут пересозданы. -
Использование
xargs
сseq
позволяет генерировать миниатюры для определенного диапазона идентификаторов медиафайлов, что может быть полезно для обработки больших медиабиблиотек кусками.
Ваша ситуация, где старые размеры миниатюр остаются даже после использования команды, соответствует стандартному поведению WP-CLI, так как удаление устаревших миниатюр – это отдельная задача, которая не выполняется по умолчанию.
Пример
В вашем случае, вы использовали команду wp media regenerate --only-missing
, чтобы создать недавно добавленные размеры миниатюр для всех изображений, но старые размеры остались нетронутыми. Это ожидаемо, учитывая, что стандартная функциональность не предполагает удаление устаревших миниатюр.
Предполагаем, что у вас уже есть опыт работы с большими медиабиблиотеками через WP-CLI и использование команд для управления ими. Давайте рассмотрим ваш случай подробнее. После изменения настроек миниатюр в вашем Woocommerce вы заметили, что WordPress начал автоматический фоновый процесс пересоздания миниатюр. Это стандартное поведение WordPress, но использование WP-CLI может ускорить процесс для объемных библиотек, таких как ваша.
Вы обнаружили, что старые форматы миниатюр не удаляются даже при использовании обширного перерасчета, и это абсолютно нормально. По дефолту, WP-CLI и даже внутренние функции WordPress не удаляют старые миниатюры, так как это может повлиять на дизайн или функциональность сайта, если они используются где-либо.
Применение
Для решения вашей задачи по удалению ненужных старых миниатюр, вам потребуется применить специальные решения. Варианты действий могут включать:
-
Плагины для удаления старых миниатюр: Существует ряд плагинов, которые предлагают функции для анализа и удаления неиспользуемых, устаревших миниатюр. Некоторые из наиболее популярных включают "Regenerate Thumbnails Advanced" или "Force Regenerate Thumbnails". Они могут помочь аккуратно очистить пространство на сервере.
-
Кастомные скрипты: Если у вас есть программистские навыки или доступ к разработчику, вы можете создать специальный скрипт, который будет проходить через файловую систему и удалять миниатюры, размеры которых больше не актуальны или не указаны в текущих настройках темы.
-
Дополнительные WP-CLI команды или коды: Существуют дополнительные команды WP-CLI или фрагменты кода, которые можно интегрировать в вашу установку WordPress для автоматизации процесса удаления старых миниатюр. Это требует тщательного тестирования в разработческой среде перед применением в продакшн-среде, чтобы избежать потерь важных данных.
Относительно вашего вопроса о том, удаляет ли команда wp media regenerate --yes
старые изображения — ответ таков: по умолчанию, нет, она лишь пересоздает миниатюры, оставляя старые файлы. Поэтому для достижения желаемого результата по очистке следует использовать вышеупомянутые решения или дополнительные инструменты. Это позволит сохранить порядок в файловой системе и уменьшить объем занимаемого места на сервере.
Конечной целью должно быть обеспечение аккуратности в медиабиблиотеке, поддержание оптимизации производительности сайта и снятие возможной нагрузки на систему из-за растущего числа ненужных файлов. К сожалению, автоматическое удаление устаревших миниатюр не входит в стандартный функционал команды, и для проведения чистки потребуются дополнительные действия.