Настройка WooCommerce Subscriptions (подписки)
WooCommerce Subscriptions — платный плагин от WooThemes/Automattic, добавляющий механику повторяющихся платежей поверх стандартного WooCommerce. Без него реализовать подписочную модель на WordPress нельзя без глубокой кастомной разработки.
Что делает плагин
Плагин вводит тип продукта «Subscription» с двумя вариантами: простая подписка и вариативная. Для каждого продукта задаются:
- Billing period — every N days/weeks/months/years
- Billing interval — как часто списывать внутри периода
- Free trial — бесплатный пробный период до первого списания
- Sign-up fee — разовый платёж при активации сверх регулярного
Технически плагин создаёт дополнительные таблицы wcs_* и расширяет wp_posts / wp_postmeta для хранения данных подписки, расписания и токенов платёжного метода.
Поддерживаемые платёжные шлюзы
WooCommerce Subscriptions требует шлюз с поддержкой автоматического списания (automatic recurring payments). Не все шлюзы это умеют — они должны явно объявить поддержку через хук supports:
// Пример проверки поддержки шлюзом recurring payments
$gateway = WC()->payment_gateways()->get_available_payment_gateways()['stripe'];
if ( $gateway->supports( 'subscriptions' ) ) {
// шлюз умеет автоматические списания
}
Совместимые «из коробки»: Stripe (через WooCommerce Payments или WooCommerce Stripe Gateway), PayPal Reference Transactions, Authorize.Net, Braintree. Для CloudPayments, ЮKassa, Tinkoff — нужна проверка их плагинов на объявление add_support('subscriptions').
Если шлюз не поддерживает automatic recurring — подписка переходит в режим manual renewal, покупателю присылается invoice-письмо, он платит вручную. Это работает, но конверсия ниже.
Установка и базовая конфигурация
- Загрузить плагин из WooThemes, установить через Плагины → Добавить → Загрузить плагин.
- Активировать лицензионный ключ в WooCommerce → Subscriptions → License.
- В WooCommerce → Settings → Subscriptions задать:
-
Mixed checkout— разрешать ли одновременную покупку подписки и обычного товара -
Maximum failed payments— количество ошибок списания до отмены подписки (обычно 3) -
Renewal payment email— от кого идут письма о продлении
-
Создание продукта-подписки
Товары → Добавить товар
→ Тип товара: Simple subscription
→ Subscription price: 990 руб / month
→ Free trial: 7 days
→ Sign-up fee: 0
→ Expire after: Never (или конкретный срок)
Вариативные подписки (разные тарифы — Basic/Pro/Enterprise) создаются как Variable subscription с атрибутами.
Управление подписками
В разделе WooCommerce → Subscriptions отображается список всех активных, приостановленных и отменённых подписок. Каждую можно:
- Изменить дату следующего платежа вручную
- Применить купон к будущим списаниям
- Переключить покупателя на другой тариф (апгрейд/даунгрейд)
- Инициировать принудительное списание вне расписания
Хуки для кастомизации
// Действие после успешного renewal payment
add_action( 'woocommerce_subscription_renewal_payment_complete', function( $subscription, $last_order ) {
$user_id = $subscription->get_user_id();
$plan = $subscription->get_items(); // тарифный план
// обновить роль пользователя, отправить бонус и т.д.
}, 10, 2 );
// Действие при отмене подписки
add_action( 'woocommerce_subscription_status_cancelled', function( $subscription ) {
$user_id = $subscription->get_user_id();
// снять доступ, уведомить команду
} );
Интеграция с WooCommerce Memberships
Подписки часто работают в паре с Memberships — подписка оплачивает членство, членство ограничивает доступ к контенту. Связь настраивается в WooCommerce → Memberships → Membership Plans → Edit Plan → Grant Access.
Проблемы, которые встречаются при настройке
Самая частая — платёжный шлюз не поддерживает tokenization. Симптом: при оформлении подписки Stripe/PayPal работают, местный шлюз нет. Решение: проверить, что плагин шлюза версии не ниже рекомендованной для WCS, и что он вызывает $this->supports[] = 'subscriptions'.
Вторая проблема — cron-задачи не выполняются. WCS завязан на WP-Cron для запуска renewal payments. На хостингах с отключённым встроенным cron нужно настроить системный cron:
# /etc/cron.d/wp-cron
*/5 * * * * www-data wget -q -O /dev/null "https://example.com/wp-cron.php?doing_wp_cron"
Или использовать Action Scheduler (уже входит в WCS) с внешним тригером.
Сроки
Базовая настройка с одним тарифом и Stripe — 1–2 рабочих дня. Несколько тарифных планов, апгрейды/даунгрейды, интеграция с Memberships, локальные шлюзы — 3–5 дней.







