Содержание статьи
- 1 Как активировать новую галерею изображений в WooCommerce после обновления
- 2 Проверка совместимости темы и плагинов с обновлённой галереей WooCommerce
- 3 Установка и настройка WooCommerce CLI для управления через командную строку
- 4 Примеры CLI-команд для импорта товаров и обновления заказов в WooCommerce
Замените устаревший JavaScript-код в шаблонах карточек товара. Старый подход с $( \'.woocommerce-product-gallery\' ).flexslider() больше не работает. Новый механизм использует wp.media, инициализация идет через initZoom() и initLightbox(). Убедитесь, что темы и плагины не переопределяют галерею через remove_action или фильтры.
Если вы использовали переопределения шаблонов, проверьте single-product/product-image.php. В нем больше нет вложенных div.flex-viewport – структура упростилась. Ошибки отображения – верный признак конфликта.
Не работает прокрутка изображений? Возможно, вы не подключили wc-product-gallery скрипт. Добавьте в тему:
wp_enqueue_script( \'wc-product-gallery\' );
CLI-интерфейс теперь позволяет управлять заказами, купонами и каталогом без доступа к админке. Проверьте команды через:
wp wc --help
Например, создать купон:
wp wc coupon create --code=TEST2025 --discount_type=percent --amount=20
Важно! Некоторые команды требуют авторизации через REST API ключи – без них будет ошибка доступа.
Ошибки 401 Unauthorized чаще всего связаны с неправильными правами пользователя в wp-cli. Используйте --user=admin с привилегиями администратора.
Инициализация CLI требует REST API и permalinks – проверьте /%postname%/ в настройках постоянных ссылок. Без них – падение функционала.
Не доверяйте сторонним темам, которые регистрируют свои скрипты с конфликтующими хендлерами. Обновленный движок требует строгого следования порядку загрузки. Убедитесь, что enqueue_block_assets не переопределен плагином или кастомной темой.
Внимание! Нельзя использовать устаревшие хуки типа
woocommerce_single_product_image_thumbnail_html– они больше не вызываются.
Хочется стабильности? Проверьте, не включен ли lazy-loading для галерей в нестандартных темах. Он ломает зум и светбокс.
CLI для каталога товаров позволяет массово удалять неиспользуемые записи:
wp wc product delete $(wp wc product list --format=ids)
Разработчики тем должны учитывать: новая структура требует пересмотра логики ленивай загрузки и обрезки изображений. Без этого – визуальный хаос.
Поддержка старых хуков сохраняется, но работать они будут непредсказуемо. Лучше перейти на woocommerce_get_script_data и его аналоги для передачи JS-переменных.
Как активировать новую галерею изображений в WooCommerce после обновления
Включите функцию через фильтр. Без лишних кликов. Без визуального интерфейса. Просто вставьте следующий фрагмент в functions.php активной темы:
add_filter( \'woocommerce_single_product_image_gallery_classes\', function( $classes ) {
$classes[] = \'woocommerce-product-gallery--with-images\';
$classes[] = \'woocommerce-product-gallery--columns-4\';
return $classes;
} );
Убедитесь, что тема не переопределяет шаблон single-product/product-image.php. Иначе вы будете тыкаться в пустоту. Проверяйте путь: your-theme/woocommerce/single-product/product-image.php. Есть файл? Удалите. Или обновите вручную. Иначе никакой магии не произойдёт.
Внимание! Если используется кастомный лайтбокс – он конфликтует с нативной реализацией. Отключите внешний скрипт. Очистите кэш. Только потом тестируйте результат.
Активация требует JavaScript-зависимостей. Проверьте, загружается ли photoswipe. Без него – всё сломается. Команда в консоли DevTools:
wp_enqueue_script(\'photoswipe\');
Проверьте также наличие flexslider – библиотека отвечает за свайп. Отсутствует? Убедитесь, что файл wp-content/plugins/woocommerce/assets/js/frontend/single-product.js не заблокирован.
Важно: некоторые темы полностью отключают стандартную реализацию. Это не баг – это особенность. Ищите в документации темы: иногда нужно включать вручную через Customizer.
Для быстрой проверки: откройте продукт, нажмите F12, вкладка Elements. Ищите .woocommerce-product-gallery с модификаторами. Их нет? Галерея не активна.
Не используйте старые хаки через jQuery. Они мешают работе событий. Если добавляли свои скрипты – отключите и протестируйте без них.
Помните! Сбои часто происходят из-за минификации и агрегации скриптов. Временно отключите Autoptimize, WP Rocket и подобные плагины. Проверяйте в чистом виде.
Завершите настройку очисткой transient-кэшей. Команда WP-CLI:
wp transient delete --all
После перезагрузки страницы интерфейс станет активным. Если нет – ищите виновника в конфликтах JS.
Проверка совместимости темы и плагинов с обновлённой галереей WooCommerce
Начинайте с анализа функции woocommerce_single_product_image_html в теме. Если она переопределена – почти гарантирован конфликт. Проверяйте наличие кастомных шаблонов single-product/product-image.php и single-product/product-thumbnails.php. Старые версии этих файлов ломают отображение и логику скриптов.
Откройте functions.php. Ищите хуки remove_action(\'woocommerce_before_single_product_summary\', \'woocommerce_show_product_images\', ...) и аналоги. Если они есть – нужно ручное вмешательство. Особенно, если тема жёстко привязывает стили к старым DOM-структурам.
Проверка JavaScript. Если тема или плагин регистрирует собственные скрипты галереи – ищите конфликты с flexslider, photoswipe, zoom. Любой переопределённый init на .woocommerce-product-gallery требует ревизии. Пример потенциального конфликта:
jQuery(\'.woocommerce-product-gallery\').flexslider({ animation: \'slide\' });
Так делать уже нельзя. Новая логика инициализирует всё сама. Вмешательство ломает навигацию и зум. Оставьте инициализацию ядру.
Далее – сторонние плагины. Особенно галереи и слайдеры. Проверяйте:
- Любые
enqueue_scriptс зависимостями отproduct-gallery - Плагины, добавляющие кастомные lightbox-механизмы
- Переопределения через
template_overridesв папке плагина
Внимание! Даже визуально корректно отображающаяся галерея может не работать с мобильными свайпами, lazy-load или keyboard-навигацией.
Следующий шаг – отладка через консоль. Откройте devtools, вкладка Console. Ошибки по типу undefined is not a function на product-gallery сигнализируют о неправильной инициализации. Особенно в темах с устаревшими JS-бандлами.
Важно помнить: многие проблемы выявляются только при включённом кэше и минификации. Тестируйте на production-сборке, а не в dev-среде.
И наконец – кэширование. Если используется WP Rocket, Autoptimize или LiteSpeed Cache – очищайте весь frontend-кэш после правок. Иначе будете искать баги там, где их нет.
- Проверяйте стили на мобильных. Часто они не учитывают scroll-зоны и overlay.
- Инспектируйте DOM. Если классы
woocommerce-product-gallery__wrapperотсутствуют – ищите виновника в переопределениях темы. - Отключайте плагины по одному. Устаревшие lightbox-решения несовместимы с новым скриптом галереи.
Установка и настройка WooCommerce CLI для управления через командную строку
Установите WP-CLI: без этого не сдвинетесь. Официальный скрипт для Unix:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
Сделайте его исполняемым:
chmod +x wp-cli.phar && sudo mv wp-cli.phar /usr/local/bin/wp
Проверьте установку:
wp --info
Далее – модуль для магазина. Подключите REST API, иначе всё бессмысленно. Добавьте ключи в профиле администратора: один для чтения, другой для записи. Обязательно задайте правильные права доступа. Без них команды работать не будут. Настройка .htaccess и permalinks – не опция, а требование.
Важно! Без включённого pretty permalinks ни одна команда для товаров не выполнится. Не ищите причину в коде – проверьте структуру ссылок.
Проверьте соединение:
wp wc api list --user=admin
Если получите ошибку авторизации – пересоздайте ключи. Иногда их блокирует кэширование на уровне сервера. Используйте define(\'WP_REDIS_DISABLED\', true); в wp-config.php временно, чтобы исключить влияние Redis.
Создание товара через терминал:
wp wc product create --name=\"Штаны бронебойные\" --type=simple --regular_price=999.99
Удаление:
wp wc product delete 4321 --force
Фильтрация по атрибутам невозможна без ручной регистрации каждого атрибута. Костыль? Да. Работает? Да. Пример:
wp wc product list --attribute_pa_material=kevlar
Команды массовой выгрузки требуют точной версии PHP. Ниже 7.4 – ловите краши. Лучше >=8.1. Протестировано.
Автономный режим возможен. Добавьте ключи в ~/.wp-cli/config.yml и забудьте о ручном вводе:
path: /var/www/html
user: admin
http:
basic_auth:
user: admin
password: skdfj239r9u2rf8
Скрипты автоматизации не прощают пробелов в кавычках. Оберните все значения. Пример фатального кода:
--name=Супер товар
А нужно:
--name=\"Супер товар\"
Хотите выжать максимум? Используйте --field для выборки конкретных данных. Зачем тащить всё, если нужен только ID?
wp wc order list --field=id
Это мощь. Но как у любого инструмента – без понимания архитектуры ядра рискуете сломать больше, чем настроить. Тестируйте в изоляции. Никогда – на продакшене.
Примеры CLI-команд для импорта товаров и обновления заказов в WooCommerce
Импортировать CSV-файл с товарами можно командой:
wp wc product create $(wp eval \'echo file_get_contents(\"wp-content/uploads/products.csv\");\' | jq -c \'.[]\')
Это не шутка. JSON из CSV должен быть подготовлен заранее. Без нормализации структуры ничего не выйдет. Стандартная wp import не подойдёт – она не знает о товарах. Придётся использовать REST через WP-CLI с предварительной трансформацией.
Для массового обновления остатков по артикулу:
wp eval \'foreach (get_posts([\"post_type\" => \"product\", \"numberposts\" => -1]) as $p) { $sku = get_post_meta($p->ID, \"_sku\", true); if ($sku === \"ABC123\") { update_post_meta($p->ID, \"_stock\", 15); wc_update_product_stock_status($p->ID); } }\'
Да, это грязно. Но работает. Можно обернуть в bash и прогнать список значений из файла. Быстро. Без излишеств. Без костылей в админке.
Для обновления статуса заказа:
wp post update 1234 --post_status=wc-completed
Параметр --post_status принимает wc-pending, wc-processing, wc-on-hold, wc-completed, wc-cancelled, wc-refunded, wc-failed. Всё, больше ничего.
Если требуется изменить статус сразу у десятка заказов – используйте цикл:
for id in 1001 1002 1003; do wp post update $id --post_status=wc-processing; done
Важно помнить: при изменении статуса напрямую через wp post update не триггерятся хуки woocommerce_order_status_changed и им подобные.
Внимание! Для корректного запуска бизнес-логики лучше использовать
wp evalс вызовомupdate_status()у объекта WC_Order.
Пример:
wp eval \'$order = wc_get_order(1234); $order->update_status(\"completed\");\'
Синтаксис лаконичен, но за ним – целый вагон последствий. В том числе отправка писем, пересчёт налогов, снятие холда.
Помните: манипуляции через WP-CLI не учитывают сторонние плагины, добавляющие поля или кастомную логику – всегда тестируйте на staging!
Нужен импорт с мета-данными и вариативностью? Только кастомный скрипт. Только через wp eval-file. Всё остальное не масштабируется.
