Настройка WooCommerce Memberships (членство)
WooCommerce Memberships — плагин для создания платного или бесплатного закрытого раздела сайта. Он не обрабатывает платежи напрямую — он управляет доступом. Оплата идёт через WooCommerce (обычный товар) или через WooCommerce Subscriptions (регулярные платежи).
Архитектура плагина
Три ключевых объекта:
- Membership Plan — тариф с правилами доступа: какой контент, какие скидки, какие возможности
- User Membership — конкретный экземпляр членства для пользователя: план, дата начала, дата окончания, статус
- Membership Content Rules — правила вида «скрыть/ограничить доступ к посту/рубрике/типу контента для всех, кроме участников плана X»
Данные хранятся в wp_posts (тип wc_user_membership) и wp_postmeta.
Создание плана членства
WooCommerce → Memberships → Membership Plans → Add New
→ Название: «Pro Member»
→ Access Length: Unlimited / Fixed (X days) / Subscription-tied
После создания плана — три вкладки настройки:
Restriction Rules — что закрыть для не-членов:
- Post/Page/CPT по отдельности
- Весь тип записей (
post_type) - Таксономия (рубрика, тег, кастомная)
- Контент внутри поста через шорткод
[wcm_nonmember_content]
Purchasing Discounts — скидки для членов в магазине:
- % или фиксированная сумма на конкретные товары / категории
- Применяется автоматически при добавлении в корзину
Members Area — что показывать в личном кабинете члена (разделы: My Membership, My Profile, Members Discounts и т.д.)
Связь с продуктом WooCommerce
Членство выдаётся при покупке конкретного товара. Привязка — на странице товара, вкладка Linked Memberships:
Товар «Годовой доступ Pro» → Linked Membership Plan: Pro Member
Grant access: upon purchase / upon order completion
Один товар может давать несколько планов. Один план — несколько товаров с разными ценами.
Связь с WooCommerce Subscriptions
Если членство привязано к подписке — оно автоматически приостанавливается при паузе/отмене подписки и возобновляется при успешном продлении. Это делается через Tied to a Subscription в настройках плана.
Ограничение контента через PHP
// Проверить, является ли текущий пользователь членом плана
if ( wc_memberships_is_user_active_member( get_current_user_id(), 'pro-member' ) ) {
// показать закрытый контент
}
// Получить все активные членства пользователя
$memberships = wc_memberships_get_user_active_memberships( $user_id );
foreach ( $memberships as $membership ) {
echo $membership->get_plan()->get_name();
echo $membership->get_end_date();
}
Отложенный доступ (drip content)
Memberships поддерживает «капельный» доступ — контент открывается через N дней после активации членства:
Content Rule → Delay access: 7 days after membership start
Используется для онлайн-курсов: урок 1 сразу, урок 2 через 7 дней, урок 3 через 14 дней.
Импорт членств через CSV
При миграции с другой системы или массовой выдаче доступа:
WooCommerce → Memberships → Members → Import
CSV формат: user_email, plan_slug, start_date, end_date
Или через WP-CLI:
wp wc memberships member create \
--user_id=42 \
--plan_id=15 \
--status=active
Кастомные статусы и хуки
// Действие при активации нового членства
add_action( 'wc_memberships_user_membership_status_changed', function( $user_membership, $old_status, $new_status ) {
if ( 'active' === $new_status ) {
// отправить приветственное письмо, создать запись в CRM
send_crm_event( $user_membership->get_user_id(), 'membership_activated' );
}
}, 10, 3 );
Что требует ручной проверки при настройке
Кэширование — злейший враг Memberships. Если на сайте стоит WP Super Cache, W3 Total Cache или Varnish — закрытый контент может кешироваться и показываться незалогиненным пользователям. Решение: либо исключить страницы с защищённым контентом из кеша, либо переключиться на фрагментное кеширование и не кешировать для залогиненных.
Конфликты с SEO-плагинами: Yoast и RankMath иногда индексируют метаданные закрытых страниц. Настройка noindex для страниц с ограниченным доступом — отдельный шаг.
Сроки
Один план, базовые правила ограничения, привязка к продукту — 1–2 рабочих дня. Несколько планов с разными уровнями доступа, drip content, интеграция с Subscriptions, импорт существующих членств — 3–5 дней.







