Для владельцев интернет‑магазинов на WooCommerce с обширным ассортиментом (тысячи товаров и более), использующих плагин YML for Yandex Market, стандартная генерация фида через админку может оказаться недостаточно эффективной.
Основные сложности при работе с крупными каталогами:
- Прерывание процесса из‑за тайм‑аута (превышения лимита времени выполнения скрипта).
- Длительное время генерации, которое может составлять десятки минут или даже часы.
- Высокая нагрузка на сервер, приводящая к замедлению сайта во время сборки фида.
Решение — использовать WP-CLI и внешний планировщик задач (cron). Это позволяет запускать сборку фида автоматически, в фоне, без нагрузки на админку и браузер.
В этой инструкции я расскажу, как это сделать — пошагово, даже если вы раньше не работали с командной строкой.
Что такое WP-CLI?
WP-CLI — это инструмент командной строки для управления WordPress. Представьте, что вы можете выполнять действия на сайте (обновлять плагины, создавать пользователей, генерировать фиды) прямо в терминале сервера — без открытия браузера.
Начиная с версии 5.3.0 плагин YML for Yandex Market поддерживает WP-CLI и предоставляет специальные команды для:
- Запуска генерации фида;
- Проверки статуса;
- Автоматизации через WP-Cron.
Теперь, когда вы узнали, что такое WP-CLI, давайте пошагово разберемся, как им пользоваться для работы с плагином YML for Yandex Market.
Шаг 1: Убедитесь, что у вас есть доступ к SSH
WP-CLI работает только на серверах с доступом по SSH. Это значит, что:
- Обычные shared-хостинги (например, Timeweb, Beget Starter) — не подходят.
- Подходят: VPS, выделенные серверы, облачные хостинги (DigitalOcean, AWS, Hetzner), а также продвинутые тарифы Beget/VPS.
Если вы не знаете, есть ли у вас SSH — спросите у поддержки хостинга.
Шаг 2: Проверьте, установлен ли WP-CLI
Подключитесь к серверу через SSH. Используйте программу PuTTY или терминал при помощи команды:
ssh вашпользователь@вашсервер.ru
Перейдите в папку вашего сайта. Например:
cd /var/www/mysite.ru
И проверьте, установлен ли WP-CLI:
wp --info
Если вы увидите что-то вроде:
PHP binary: /usr/bin/php
PHP version: 8.1.2
...
— отлично, WP-CLI работает.
Если команда
wpне найдена — её нужно установить. Инструкция по установке: https://wp-cli.org/ru/
Шаг 3: Узнайте ID своего фида
Каждый фид в плагине имеет ID — цифру, по которой система его определяет.
Как найти ID:
- Зайдите в админку WordPress → Y4YM. Откроется страница "YML for Yandex Market - Список фидов".
- Наведите мышкой на нужный фид и под его названием появится ID.
Запомните этот номер — он понадобится в командах.
Шаг 4: Запустите генерацию фида вручную
Теперь запустим сборку фида вручную, чтобы убедиться, что всё работает.
Выполните команду (подставьте свой feed_id, в моём случае это цифра 6):
wp y4ym generate --feed_id=6
Если всё в порядке, вы увидите примерно такой вывод:
Feed #1. The maximum step execution according to the settings is 28 seconds
Feed #1. Creating feed headers.
Feed #1. Creating temporary feed files. The number of processed products: 120 / 1500 (8.0%)
...
Feed #1. The creation of the feed has been completed successfully!
Это означает, что фид успешно собран.
Команда
generateиспользует пошаговую генерацию — идеально для больших каталогов. Она безопасна и не вызывает таймаутов.
Альтернатива: Быстрая генерация (для малых фидов)
Если у вас менее 1000 товаров, можно использовать команду quick:
wp y4ym quick --feed_id=6
Она создаёт фид за один проход — быстрее, не разбивая процесс генерации на кусочки. Однако такой подход рискованнее при больших количествах товаров из-за высокой вероятности зависания скрипта, а также повышенному расходу ресурсов сервера.
Для автоматизации лучше использовать generate.
Шаг 5: Настройка автоматического запуска (через cron)
Теперь сделаем так, чтобы фид обновлялся каждый день в одно и то же время — например, ночью при помощи серверного крона.
Откройте редактор cron-задач:
crontab -e
Добавьте строку:
0 3 * * * cd /var/www/mysite.ru && wp y4ym generate --feed_id=6 --allow-root > /dev/null 2>&1
Разберём по частям:
0 3 * * *— запускать каждый день в 3:00 утра.cd /var/www/mysite.ru— перейти в папку сайта.wp y4ym generate --feed_id=6— команда генерации фида №6.--allow-root— разрешает запуск от имени root (часто нужно на VPS).> /dev/null 2>&1— не выводить логи (чтобы не засорять систему).
После сохранения фид будет обновляться автоматически каждую ночь.
Продвинутый пример: Автоматическая замена домена и отправка на сервер
Допустим, вы сменили домен или хотите отправлять фид на другой сервер (например, в рекламное агентство).
Можно расширить команду в cron:
0 3 * * * cd /var/www/mysite.ru && \
wp y4ym generate --feed_id=1 --allow-root && \
sed -i 's|staryi-dom.ru|novyi-dom.ru|g' wp-content/uploads/feed-yml-1.xml && \
rsync -av wp-content/uploads/feed-yml-1.xml user@remote-server:/feeds/
Что делает этот скрипт:
- Генерирует фид,
- Заменяет старый домен на новый в XML,
- Отправляет файл на удалённый сервер.
Возможные проблемы и решения
| Проблема | Решение |
|---|---|
Command 'wp' not found | Установите WP-CLI: 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-content/uploads, активность плагина |
| Ошибка доступа к базе | Убедитесь, что wp-config.php доступен и корректен |
Не работает --allow-root | Добавьте флаг — он нужен, если вы запускаете команду от имени root |
Когда использовать WP-CLI?
Используйте этот способ, если:
- Вы отказались от Вордпресовского крона в пользу серверного;
- У вас более 1000 товаров;
- Вы хотите полностью автоматизировать обновление фида;
- У вас VPS или выделенный сервер;
- Вы готовы работать с командной строкой.
Теперь ваш фид будет обновляться без участия человека, стабильно и без ошибок. Удобно, надёжно, профессионально.
