Подключить товарный фид в WordPress: разбираем на живом примере
Магазин на WooCommerce с тремя сотнями товаров должен попасть на Яндекс Маркет и в прайс-агрегатор — вручную не загрузишь, а без обновления цен каждый час заявки идут на распроданные позиции.

Магазин на WooCommerce с тремя сотнями товаров должен попасть на Яндекс Маркет и в прайс-агрегатор — вручную не загрузишь, а без обновления цен каждый час заявки идут на распроданные позиции. Товарный фид решает задачу: XML-файл с товарами обновляется автоматически, площадка забирает его по расписанию, остатки и цены всегда актуальны.
Очевидный путь — найти бесплатный плагин и нажать «сгенерировать». На каталоге до сотни позиций это работает, но на реальном объёме сталкиваешься с тремя проблемами: генерация упирается в memory_limit, обновление по кронам не срабатывает, вариативные товары экспортируются с пустыми полями. Разбираем три рабочих подхода и смотрим, где какой ломается.
Плагин для генерации фида — когда этого достаточно
Плагины вроде CTX Feed, Product Feed PRO for WooCommerce или «YML для Яндекс Маркет» покрывают типовые сценарии: выбираешь формат (YML, Google Shopping XML, Facebook Catalog), настраиваешь соответствие атрибутов WooCommerce полям фида, указываешь категории для выгрузки. Плагин генерирует файл и обновляет его по расписанию через WP-Cron.
Для каталога до 500–700 товаров без сложных вариаций это самый быстрый путь. Настройка занимает 15–20 минут, результат — готовая ссылка на XML, которую можно передать площадке.
Цена вопроса: бесплатные версии ограничивают количество товаров в фиде (часто до 50–100 позиций) или число полей для маппинга. Платные лицензии стоят от $79 до $150 в год. Если каталог растёт быстро, лимит упрётся через пару месяцев — это надо закладывать сразу.
Где подход ломается
- Вариативные товары экспортируются без цены или артикула — если не настроить явно, какой атрибут брать из вариации.
- Фид не обновляется автоматически — WP-Cron срабатывает только при заходе на сайт, на слабом трафике обновление может зависнуть на часы.
- Генерация обрывается на середине — скрипт упирается в memory_limit или max_execution_time, файл остаётся неполным.
Генерация через кастомный код и системный крон
Если плагин не справляется или нужна нестандартная логика (например, исключать товары с нулевым остатком на складе партнёра через внешний API), пишешь генератор сам. Создаёшь отдельный PHP-скрипт или хук в functions.php, который формирует XML по спецификации площадки, сохраняет файл в uploads и отдаёт его по прямой ссылке.
Запуск через системный cron (crontab на сервере), а не через WP-Cron — гарантирует, что обновление произойдёт в заданное время независимо от посещаемости сайта. Для больших каталогов генерацию разбиваешь на батчи: за один запуск обрабатываешь 200 товаров, записываешь offset в опцию, следующий запуск продолжает с того места.
Кастомная генерация имеет смысл, когда в фид нужно добавить данные, которых нет в WooCommerce: остатки с 1С, характеристики из внешней базы, динамические скидки по условиям, не покрываемым стандартными купонами.
Цена вопроса: нужен доступ к crontab и понимание работы с WP_Query, XML-генерацией (SimpleXML или XMLWriter для больших объёмов). Поддержка ложится на плечи команды — при изменении требований площадки придётся править код вручную.
Типичные ошибки
- Не закрываешь XML-теги при обрыве скрипта — файл становится невалидным, площадка его не принимает.
- Используешь WP_Query без указания posts_per_page=-1 — на дефолтных настройках получишь только первые 10 товаров.
- Не учитываешь таймзону при записи даты в поле available — товар может показаться недоступным, хотя в базе он активен.
Внешний сервис через REST API
Сервисы вроде Feedonomics, DataFeedWatch или российские аналоги забирают данные из магазина через WooCommerce REST API, обрабатывают их на своей стороне и отдают готовый фид площадке. Нагрузка на сервер минимальная: API отдаёт JSON с товарами, всю тяжёлую работу делает внешняя система.
Подход оправдан, если товары выгружаются на десяток площадок с разными форматами, и поддерживать отдельный фид для каждой накладно. Сервис делает один запрос к API, преобразует данные в нужные форматы, применяет правила (например, добавляет наценку для одной площадки и убирает её для другой).
Цена вопроса: подписка от $29 до $500 в месяц в зависимости от числа товаров и площадок. Добавляется зависимость от внешней инфраструктуры — если сервис упал, обновления фидов останавливаются.
Сравнение подходов
| Подход | Настройка | Нагрузка на сервер | Гибкость | Стоимость |
|---|---|---|---|---|
| Плагин | 15–20 минут, интерфейс | Средняя, генерация на хостинге | Ограничена возможностями плагина | $0–150 в год |
| Кастомный код | 2–5 часов разработки | Средняя, можно разбить на батчи | Полная | Время разработчика |
| Внешний сервис | 30–60 минут, подключение API | Низкая, только REST API | Высокая, правила на стороне сервиса | $29–500 в месяц |
Когда что выбирать
Плагин — если каталог до 1000 товаров, одна-две площадки, стандартная структура WooCommerce без кастомных полей. Ограничения бесплатной версии можно обойти, разбив каталог на несколько фидов по категориям.
Кастомный код — когда нужна интеграция с внешними системами (1С, складской учёт), динамическое формирование цен или атрибутов, которые плагины не поддерживают. Или когда каталог превышает 5000 товаров и генерация должна быть максимально оптимизирована.
Внешний сервис — если выгружаешься на пять и больше площадок, каждая со своими требованиями к формату и атрибутам. Или если сервер слабый (shared-хостинг с жёстким memory_limit), а перенос на VPS пока не планируется.
Проверка и типичные проблемы
После настройки фида проверяешь его валидатором площадки. Яндекс Маркет даёт подробный отчёт об ошибках: какие товары не прошли модерацию, какие поля заполнены неправильно. Google Merchant Center показывает предупреждения по каждому товару.
Фид генерируется, но пустой — проверь видимость товаров: они должны быть опубликованы, не в черновике, и ихstock status должен быть instock, если в настройках фида стоит фильтр «только в наличии».
Обновление не происходит — если используешь WP-Cron, зайди на сайт или настрой пинг по расписанию (можно через внешний сервис мониторинга). Лучше — переключись на системный cron.
Генерация обрывается на середине — увеличь memory_limit в wp-config.php до 512M или 1G, если хостинг позволяет. Если нет — используй батчевую генерацию или переходи на внешний сервис.
Версии и совместимость
Инструкция актуальна для WordPress 6.x и WooCommerce 8.x–9.x. Плагины CTX Feed и Product Feed PRO регулярно обновляются под новые версии WooCommerce, но при обновлении WooCommerce с 7.x на 9.x проверяй совместимость плагина на тестовом сайте — структура данных вариативных товаров изменилась.
При использовании REST API убедись, что на сайте включена базовая аутентификация или OAuth — по умолчанию WooCommerce REST API требует ключи доступа, которые создаются в разделе WooCommerce → Настройки → Дополнительно → REST API.
Что делать дальше
Настроив фид, отслеживай его обновление первую неделю: проверяй время последней модификации файла, смотри логи площадки — как часто она забирает фид и сколько товаров принимает. Если площадка начинает отклонять товары массово, проблема чаще всего в изменении спецификации формата — смотри changelog площадки и обновляй маппинг атрибутов.
Для больших каталогов настрой мониторинг: скрипт, который раз в час проверяет размер фида и отправляет уведомление, если он упал до нуля или не обновлялся больше двух часов. Это позволит поймать проблему раньше, чем заказчик или площадка.
Логотип и фирменный стиль: Три концепции разного характера, палитра с обоснованием, проверка на читаемость в малом размере и в один цвет.
Спросить за 60 ₽Источники: WooCommerce REST API Documentation, Яндекс Маркет: требования к YML
Частые вопросы
Какой формат фида выбрать для Яндекс Маркет и Google Merchant?
Фид не обновляется автоматически — как заставить WP-Cron работать?
Генерация фида обрывается на середине — что делать?
Вариативные товары попадают в фид с пустыми ценами — как исправить?
На каком этапе проверять корректность фида?
Плагин показывает ошибку «недостаточно памяти» — можно обойти без апгрейда хостинга?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту. Instagram, Facebook и WhatsApp принадлежат компании Meta Platforms Inc., признанной в России экстремистской организацией; её деятельность на территории Российской Федерации запрещена.