Skip to content

Все для WordPress, веб-розробки — і не тільки

🔄 Як регенерувати мініатюри в WooCommerce (5 кроків)

🔄 Як регенерувати мініатюри в WooCommerce (5 кроків)

Змінили тему WooCommerce, і зображення товарів попливли? Знайома ситуація. Після зміни шаблону старі мініатюри залишаються нарізаними під розміри попередньої теми, а нові потребують зовсім інших пропорцій. Як наслідок: десь обрізання, десь розтягування, десь порожнє місце замість вибраного зображення.

Ручне виправлення кожного товару — це шлях у нікуди, якщо в каталозі сотні позицій. На щастя, WordPress пропонує три робочі способи перестворити мініатюри автоматично: плагін, вбудований механізм WooCommerce та WP-CLI. Кожен, для своєї ситуації.

Розберемо всі п'ять кроків, від найпростішого до просунутого.

💡 Швидкий огляд:

  • Встановіть безплатний плагін Regenerate Thumbnails з репозиторію WordPress.org, він вирішує переважну більшість завдань із регенерації.
  • Запустіть повну регенерацію через Tools → Regenerate Thumbnails, плагін обробить усі зображення за один прохід.
  • Для одного зображення використовуйте регенерацію з медіабібліотеки, швидко й без масового перескладання.
  • Якщо у вас свіжа версія WooCommerce (3.3+), увімкніть вбудовану фонову регенерацію, вона спрацьовує автоматично при зміні розмірів.
  • Для великих магазинів із shell-доступом використовуйте WP-CLI wp media regenerate, швидше за плагін і без навантаження на HTTP.

Крок 1: встановіть плагін Regenerate Thumbnails

Це безплатний плагін із мільйоном активних встановлень на WordPress.org, який підтримує команда Automattic. Він робить рівно те, що обіцяє в назві, без зайвого інтерфейсу та налаштувань.

Перейдіть у Plugins → Add New, введіть у пошук «Regenerate Thumbnails», натисніть Install Now, а потім Activate. Плагін не потребує налаштування, після активації пункт Tools → Regenerate Thumbnails одразу з'являється в адмінці.

Зверніть увагу: плагін працює з оригінальними завантаженими файлами. Він не перестискає вихідники, а створює нові мініатюри під поточні розміри, задані в налаштуваннях теми та Settings → Media. Старі мініатюри при цьому видаляються опціонально (позначка «Delete old, unused thumbnails»).

Крок 2: запустіть повну регенерацію всіх мініатюр

Відкрийте Tools → Regenerate Thumbnails. Інтерфейс мінімалістичний: одна кнопка і три опції.

Інтерфейс повної регенерації мініатюр у плагіні

Перед запуском переконайтеся, що вибрано опцію Skip regenerating existing correctly sized thumbnails, це зекономить час: плагін пропустить мініатюри, які вже збігаються за розмірами.

Натисніть Regenerate All Thumbnails. Плагін почне почергово обробляти кожне зображення в медіабібліотеці. Для сотні зображень процес триває 2-3 хвилини. Для кількох тисяч, до 15-20 хвилин.

Не закривайте вкладку браузера, поки триває регенерація. Якщо сторінка оновиться сама, нічого страшного: уже оброблені зображення залишаться перескладеними, плагін просто продовжить із того місця, де зупинився.

Після завершення ви побачите зведення, скільки мініатюр перестворено успішно, а скільки з помилкою. Помилки зазвичай пов'язані з пошкодженими файлами (зіпсований JPEG або нестандартний формат), їх видно в лозі.

Результат незворотний. Відкотити перескладені мініатюри до попередніх версій не можна, тому перед масовою регенерацією зробіть бекап сайту.

Крок 3: відновіть одне конкретне зображення

Масова регенерація потрібна не завжди. Якщо ви замінили одну картку товару й хочете перескласти лише її мініатюри, плагін дозволяє зробити це точково.

Зайдіть у Media → Library, перемкніться в режим списку (List View). Навпроти кожного зображення в рядку з'явиться посилання Regenerate Thumbnails.

Поштучна регенерація мініатюр через медіабібліотеку

Натисніть на нього, і плагін перескладе мініатюри лише для цього файлу. Час обробки одного зображення, 1-2 секунди.

Цей самий метод працює для пакетної регенерації: позначте потрібні зображення, виберіть у випадному меню масових дій Regenerate Thumbnails і натисніть Apply. Зручно, коли після правок зачеплено кілька десятків зображень, а не весь каталог.

До речі, те саме доступне на сторінці редагування окремого вкладення: клікніть по зображенню в медіабібліотеці, у бічній панелі з'явиться кнопка регенерації.

Крок 4: увімкніть вбудовану регенерацію WooCommerce

З версії WooCommerce 3.3 у ядрі з'явилася фонова регенерація мініатюр. Вона спрацьовує автоматично у двох випадках: коли ви змінюєте розміри зображень через кастомізатор і публікуєте їх, або коли перемикаєте тему.

Механізм працює так: WooCommerce визначає розбіжність між поточними розмірами мініатюр і заданими, ставить завдання у фонову чергу й поступово перескладає все, що потрібно. У кастомізаторі при цьому доступний живий попередній перегляд, зміни видно одразу, ще до публікації.

Перевірити, чи запущена черга, можна в WooCommerce → Status → Logs: виберіть лог wc-background-regeneration. Якщо процес активний, в адмінці з'явиться сповіщення з кнопкою скасування.

Коли вбудований механізм не справляється (наприклад, сайт за BasicAuth, фонова черга не може виконати HTTP-запити до себе), його вимикають фільтром:

1add_filter( 'woocommerce_background_image_regeneration', '__return_false' );

Після цього регенерацію запускають вручну, через плагін або WP-CLI.

Для більшості магазинів на свіжих версіях WooCommerce цього вбудованого механізму достатньо. Плагін Regenerate Thumbnails потрібен, коли ви хочете контролювати процес вручну або очистити старі невикористовувані мініатюри.

Крок 5: регенеруйте через WP-CLI (для великих магазинів)

Командний рядок — це найшвидший спосіб, тому що немає накладних витрат на HTTP-запити та браузерний інтерфейс. Підходить, якщо у вас є доступ через SSH і встановлений WP-CLI.

Базова команда для регенерації всіх мініатюр:

1wp media regenerate --yes

Прапорець --yes пропускає підтвердження. Без нього WP-CLI запитає підтвердження для кожного вкладення, на тисячах зображень це безглуздо.

Для одного вкладення вкажіть його ID:

1wp media regenerate 123

Корисна опція --image_size задає конкретний розмір для регенерації. Наприклад, якщо тема додала новий розмір shop_catalog, а решту чіпати не потрібно:

1wp media regenerate --image_size=shop_catalog

Для дуже великих магазинів (десятки тисяч товарів) запускайте команду всередині screen або tmux, щоб процес не обірвався при розриві SSH-сесії. І обов'язково зробіть бекап перед запуском, WP-CLI, як і плагін, незворотно перезаписує мініатюри.

⁉️🤔 Часті запитання

Чи потрібно регенерувати мініатюри після оновлення WooCommerce?

Оновлення WooCommerce саме по собі не змінює розміри зображень, регенерація не потрібна. Але якщо оновлення включає скидання налаштувань кастомізатора або ви одночасно оновили тему, перевірте розміри мініатюр і в разі розбіжності запустіть регенерацію.

Що робити, якщо регенерація зависла?

Оновіть сторінку Tools → Regenerate Thumbnails. Плагін продовжить із того самого місця, він обробляє зображення по одному й не втрачає прогрес. Якщо зависання повторюється на одному й тому самому файлі, ймовірно, вихідне зображення пошкоджене. Завантажте його з медіабібліотеки, перезбережіть у графічному редакторі та завантажте заново.

Чи можна регенерувати мініатюри на тестовому сайті, а потім перенести на бойовий?

Технічно так, скопіюйте папку /wp-content/uploads/ після регенерації. Але це ризиковано: мініатюри жорстко прив'язані до розмірів, заданих у темі та Settings → Media. Якщо на бойовому сайті налаштування відрізняються, мініатюри знову не збігатимуться. Надійніше запустити регенерацію безпосередньо на бойовому сервері після бекапу.

Чим WP-CLI кращий за плагін?

Швидкістю. Плагін робить HTTP-запит до самого себе через AJAX, кожен файл — це один запит. WP-CLI працює напряму з файловою системою та базою даних, без вебсерверного прошарку. На тисячі зображень різниця становить хвилини проти пів години. Але WP-CLI потребує shell-доступу, який є не на всіх хостингах.

Чи видалить регенерація оригінали зображень?

Ні. І плагін, і WP-CLI, і вбудований механізм WooCommerce працюють лише з мініатюрами, копіями, згенерованими з оригіналу під конкретні розміри. Вихідний завантажений файл залишається недоторканим. Саме тому регенерацію можна запускати повторно скільки завгодно разів.

Чи варто видаляти старі невикористовувані мініатюри?

Варто, якщо на хостингу закінчується дисковий простір. Позначка «Delete old, unused thumbnails» у плагіні Regenerate Thumbnails знайде й видалить мініатюри, розміри яких більше не зареєстровані ні в темі, ні в Settings → Media. Перед цим обов'язково зробіть бекап, відновити видалені файли можна буде лише з резервної копії.

Що робити, якщо після регенерації зображення все одно не в порядку?

Пройдіть короткий чек-лист. Перше: відкрийте Settings → Media та Appearance → Customize → WooCommerce → Product Images, звірте розміри. Якщо вони не збігаються з тими, що прописані в темі, регенерація дасть не ті мініатюри, які очікує шаблон. Друге: перевірте, чи не кешує старі мініатюри плагін кешування або CDN, скиньте кеш. Третє: відкрийте вихідний файл із медіабібліотеки, якщо сам оригінал низької роздільної здатності, жодна регенерація якість не підвищить.

Для більшості ситуацій вистачає безплатного Regenerate Thumbnails. Якщо магазин великий і регенерація потрібна регулярно, опануйте WP-CLI, одна команда економить десятки хвилин. А на свіжих версіях WooCommerce фоновий механізм часто спрацьовує сам, достатньо просто опублікувати нові розміри в кастомізаторі.