Restrict Content Pro Hard Expiration Dates - Плагин WordPress
Restrict Content Pro Hard Expiration Dates - это плагин для WordPress, предоставляющий администраторам возможность устанавливать жесткие сроки действия для контента. Он предназначен для строгого контроля времени доступа, что делает его ценным инструментом для сайтов с подписочной моделью, где требуется управление жизненным циклом материалов.

Особенности плагина
Эта разработка значительно расширяет возможности любого сайта, предоставляя владельцам возможность устанавливать точные временные рамки доступа к информации. Пользователи могут быть уверены, что утратят доступ только по истечении указанных сроков, что особенно важно для платформ, где содержимое регулярно обновляется или ограничено по времени. Архитектура позволяет интеграторам и разработчикам эффективно управлять периодами подписки, задавая конкретные даты начала и окончания доступа.
Настройка осуществляется на интуитивно понятной административной панели с гибкими параметрами, позволяющими указать различные сроки действия в зависимости от плана подписки или уровня доступа пользователя. Это упрощает управление пользователями, которые могут иметь разные условия или тарифные планы. Простой интерфейс и широкий функционал делают его необходимым инструментом для точной организации контентной стратегии на платформе.
Решение поддерживает различные сценарии использования и легко адаптируется под требования любого проекта. Интеграция в существующую систему управления контентом упрощает администрирование и исключает необходимость значительных изменений в работающей системе. Это достигается благодаря поддержке гибкого API, предоставляющего разработчикам возможность расширять функционал без изменения исходного кода.
Самым впечатляющим аспектом технологии является ее способность защищать контент от несанкционированного доступа после истечения срока действия. Это обеспечивает надежную платформу для монетизации материалов, что является ключевым фактором успеха в онлайн-бизнесе. Restrict Content Pro Hard Expiration Dates создает защиту, необходимую для доверительной коммерциализации и безопасности контента.
Спецификации:
| Дата выхода: | 20-01-2017 | |
| Дата обновления: | 01-09-2020 | |
| Тип расширения: | Платный | |
| Лицензия: | GPL | |
| Тематика: | Контент и авторинг | |
| Совместимость: | W5.x | |
| Включает в себя: | Плагин | |
| Языковые пакеты: |
|
|
| Разработчик: | Restrict Content Pro | |
| Рейтинг: | ||
Скачивание по подписке!
Вам необходимо авторизоваться на сайте и приобрести клубную подписку!
Поделись с друзьями!
Руководство по Restrict Content Pro Hard Expiration Dates для фиксированной даты доступа
Restrict Content Pro Hard Expiration Dates - узкая надстройка для сайтов на WordPress, где доступ к закрытым материалам должен закончиться в один общий день для всего уровня подписки. В официальных материалах продукт чаще называется Hard-set Expiration Dates, поэтому дальше в руководстве эти названия используются как обозначение одной и той же идеи: не индивидуальный срок от даты регистрации, а жёсткая дата окончания для выбранного уровня.
Это руководство не повторяет краткое описание продукта. Здесь разложена практическая работа: когда фиксированная дата действительно нужна, что проверить до установки, где искать поле даты в админ-панели, как протестировать поведение участника и как не спутать hard expiration с обычной длительностью подписки.
Особое внимание уделено пограничным ситуациям. У таких add-on самая частая проблема не в кнопке установки, а в ожиданиях: администратор думает, что поздний пользователь получит полный срок доступа, а продукт делает ровно обратное - завершает доступ вместе со всей группой. Поэтому перед настройкой нужно понимать модель членства, сообщения для пользователей, поведение платежей и проверку результата на тестовом аккаунте.
Когда фиксированная дата лучше обычного срока подписки
В базовой логике Restrict Content Pro уровень подписки обычно имеет длительность. Если пользователь зарегистрировался сегодня, срок доступа считается от его регистрации или следующего продления. Hard-set Expiration Dates меняет смысл: дата больше не привязана к моменту покупки или регистрации. Все участники выбранного уровня приходят к одному дедлайну, даже если один вступил в начале набора, а другой почти перед завершением.
Фиксированная дата полезна там, где продукт продаёт участие в общем периоде, а не индивидуальный абонемент. Это важно для курсовых потоков, сезонных клубов, ограниченного доступа к материалам мероприятия, закрытых библиотек на время проекта, корпоративного обучения с общей датой окончания и программ, где все участники должны потерять доступ одновременно.
Подходящие сценарии
Самый понятный пример - учебный поток. Уровень подписки может открывать уроки, записи вебинаров, закрытый раздел с домашними заданиями и страницу с итоговыми материалами. Если поток заканчивается в один общий день, поздний участник не должен получать дополнительный месяц только потому, что зарегистрировался позже. В этом случае обычная duration-логика создаст разные даты окончания, а Hard-set Expiration Dates сохранит единый дедлайн.
Другой сценарий - сезонный клуб или временное сообщество. Участники могут вступать в течение периода, но доступ к форуму, архиву и бонусным материалам закрывается для всех одновременно. Такой подход удобен, когда после завершения сезона открывается новый уровень или новый поток, а старый доступ больше не должен продлеваться.
Подходит и доступ к материалам события: конференции, марафона, интенсивной программы, закрытого разбора. Читателю честно сообщают, что материалы доступны до общей даты завершения. В админ-панели это проще контролировать на уровне membership level, чем вручную менять даты у десятков участников.
Когда такая логика может навредить
Если вы продаёте полноценный срок доступа с момента оплаты, фиксированная дата может вызвать вопросы поддержки. Пользователь, который оплатил в конце периода, получит меньше времени, чем участник в начале набора. Это нормально только тогда, когда условие заранее понятно на странице регистрации и в письмах.
Не стоит использовать Hard-set Expiration Dates как замену полноценному управлению продлениями, рассрочками, тарифными переходами или индивидуальными исключениями. Если каждому человеку нужно своё окончание, лучше оставить обычную длительность уровня, ручное редактирование членства или другой инструмент, рассчитанный на индивидуальные даты.
| Модель | Как считается окончание | Где подходит | Главный риск |
|---|---|---|---|
| Обычная длительность уровня | От регистрации, оплаты или продления конкретного участника. | Абонементы, клубы с полным индивидуальным сроком, регулярный доступ. | У разных людей получаются разные даты окончания. |
| Hard-set Expiration Dates | Одна дата задаётся для всего уровня подписки. | Потоки, сезоны, мероприятия, общие дедлайны доступа. | Поздний участник может получить короткий срок доступа. |
Что проверить перед установкой: уровни, контент и сценарий окончания
Перед установкой не начинайте с поля даты. Сначала нужно понять, какие участники и какие материалы завязаны на уровень подписки. Restrict Content Pro позволяет ограничивать доступ по membership level, access level, роли пользователя, платному статусу и shortcode. Если на сайте эти варианты смешаны, один hard expiration не объяснит всё поведение доступа.
Определите точный уровень подписки
Откройте список уровней в админ-панели. В старых справочных материалах путь может называться Restrict > Subscription Levels, в новых интерфейсах чаще встречается Restrict > Membership Levels. Смысл один: вы редактируете объект уровня, а не отдельного пользователя.
Запишите название уровня, его идентификатор, текущую длительность, цену, роль пользователя и статус. Это нужно не для формальности. Если после проверки вы решите откатить настройку, у вас должна быть понятная запись, какой параметр был изменён и какие участники были затронуты.
Проверьте, как закрыт контент
Перейдите к нескольким ключевым страницам курса, библиотеки или закрытого раздела. В блоке ограничения доступа проверьте, выбран ли конкретный membership level, paid status, access level или роль. Если страница закрыта только по роли пользователя, истечение членства может не дать ожидаемого результата, потому что роль и членство не всегда используются одинаково.
Если используются shortcode-блоки, проверьте параметры. Например, контент может быть ограничен так:
[restrict subscription="123"]Закрытый материал для выбранного уровня.[/restrict]
Идентификатор уровня устойчивее, чем его название: если название уровня позже переименуют, ID останется тем же. Но перед публикацией не оставляйте примерные ID в рабочем контенте. Используйте реальный номер уровня со своего сайта.
Разберите поведение платежей и продлений
Hard-set Expiration Dates влияет на доступ, но не должен рассматриваться как универсальный редактор платежного графика. В документации Restrict Content Pro отдельно отмечается, что изменение expiration date у членства с auto-renew может не изменить дату следующего платежа у платёжного провайдера. Поэтому для уровней с регулярными платежами нужна отдельная проверка: что хранится в RCP, что видно в Stripe, PayPal или другом шлюзе, какие письма получает пользователь.
Рабочее правило: сначала настройте фиксированную дату на копии сайта или тестовом уровне, затем проверьте одного нового участника, одного существующего участника и одну закрытую страницу. Только после этого переносите настройку на активный уровень с реальными пользователями.
Подготовьте текст для пользователя
Если поздний участник получает меньше времени, это должно быть видно до регистрации. Добавьте короткое объяснение на страницу с формой, в описание уровня и в письмо после регистрации. Не обещайте "доступ на месяц", если фактически продаётся "доступ до окончания потока". Такая разница снижает количество обращений в поддержку сильнее, чем любая техническая правка.
Установка add-on и первичная проверка в WordPress
Установка проходит как у обычного WordPress-плагина: ZIP-архив загружается через раздел плагинов и активируется в админ-панели. Официальная страница продукта указывает, что add-on доступен из аккаунта участника Restrict Content Pro. В самом руководстве мы не разбираем покупку, лицензионные кабинеты и получение платной версии, потому что рабочая задача начинается после того, как у администратора уже есть легальный архив для установки.
Минимальный порядок установки
- Сделайте резервную копию сайта или подготовьте staging-копию.
- Убедитесь, что базовый Restrict Content Pro или текущий продукт семейства Kadence Memberships активен.
- Откройте
Plugins, затемAdd Newи используйте загрузку ZIP-файла. - После установки нажмите
Activate. - Перейдите в список уровней подписки и откройте добавление или редактирование уровня.
Ключевая проверка после активации - появление поля Expiration Date на экране добавления или редактирования уровня. Если поле не появилось, не продолжайте настройку наугад. Сначала проверьте, активен ли add-on, совместим ли он с установленной версией базового продукта и не смотрите ли вы не тот экран.
Expiration Date и какие соседние параметры стоит сверить.Почему названия разделов могут отличаться
В источниках встречаются разные названия: Restrict Content Pro, Restrict Content, Kadence Memberships, Subscription Levels и Membership Levels. Для администратора это означает простую вещь: ориентируйтесь на смысл экрана. Вам нужен раздел, где создаются и редактируются уровни членства с ценой, длительностью, access level и ролью пользователя.
Если на сайте уже используется новая версия интерфейса, пункт меню может отличаться от старой документации. Не пытайтесь исправлять это кодом и не ищите скрытые таблицы в базе данных. Сначала проверьте официальную базу знаний для вашей версии и список активных плагинов.
Первичная проверка без реальных пользователей
Создайте временный уровень или используйте staging-копию. Установите фиксированную дату для уровня, сохраните изменения и снова откройте форму редактирования. Значение должно сохраниться. Затем создайте тестового пользователя и назначьте ему этот уровень через обычную регистрацию или ручное добавление членства.
На этом этапе не нужно ждать наступления даты на рабочем сайте. Важно убедиться, что поле есть, настройка сохраняется, участник получает правильный уровень, а закрытый контент действительно зависит от этого уровня.
Настройка фиксированной даты в уровне доступа
Главная настройка add-on находится не в глобальной странице параметров, а в конкретном уровне подписки. Это логично: одна группа может завершаться в конце потока, другая работать по обычной длительности, третья быть бессрочной. Hard-set Expiration Dates позволяет задавать жёсткий дедлайн там, где он нужен, а не переписывать всю модель сайта.
Новый уровень для потока или сезона
Самый безопасный вариант - создать отдельный уровень под конкретный поток, сезон или мероприятие. Тогда вы не меняете поведение старых участников и не смешиваете людей с разными условиями доступа. В форме уровня заполните название, описание, access level, цену или бесплатный режим, роль пользователя и остальные стандартные поля. После этого укажите Expiration Date.
Не делайте название уровня единственным источником важной информации. Пользователь может увидеть его в форме регистрации, но лучше продублировать условие окончания в описании уровня, на странице с программой и в письме после регистрации. Администратору также полезно добавить внутреннюю заметку в документацию сайта: зачем создан уровень и когда его нужно закрыть для новых регистраций.
Существующий уровень с активными участниками
Если hard expiration добавляется к уже действующему уровню, риск выше. У участников могли быть индивидуальные даты, auto-renew, ручные продления или разные условия оплаты. Перед сохранением фиксированной даты сделайте экспорт списка участников этого уровня или хотя бы зафиксируйте их статусы и даты окончания. Это поможет восстановить картину, если часть пользователей обратится в поддержку.
Для существующего уровня пройдите такой порядок:
- Составьте список закрытых материалов, которые этот уровень открывает.
- Проверьте, нет ли у уровня регулярных платежей, которые должны продолжаться после общей даты.
- Сверьте тексты на странице регистрации, чтобы они не обещали индивидуальный срок.
- Установите
Expiration Dateи сохраните уровень. - Проверьте одного участника из этого уровня в админ-панели и на публичной странице.
Что делать с обычным полем длительности
Обычная длительность уровня остаётся частью модели Restrict Content Pro, но hard expiration меняет итоговый смысл окончания доступа для выбранного уровня. Не полагайтесь на догадку, как именно ваша версия соединит эти поля в каждом редком сценарии продления. Сначала протестируйте новый вход, ручное добавление участника и поведение после достижения даты на копии сайта.
Если уровень должен быть строго сезонным, обычно лучше не продавать его как бесконечно продлеваемый абонемент. Если уровень должен продлеваться индивидуально, hard expiration в большинстве случаев не нужен. Одно поле даты не должно маскировать противоречивую бизнес-логику.
Работа с существующими участниками и изменением даты
Самая чувствительная часть внедрения - не новый тестовый уровень, а уровень, где уже есть активные участники. У каждого из них может быть своя история: кто-то зарегистрировался через форму, кто-то добавлен вручную, кто-то оплатил регулярную подписку, кто-то получил доступ по акции, а у кого-то дата уже редактировалась администратором. Если поставить hard expiration поверх такой истории без подготовки, технически всё может сохраниться, но поддержка получит вопросы, на которые сложно отвечать.
Сначала разделите участников по условиям
Перед изменением действующего уровня составьте простую карту: кто должен завершить доступ вместе с группой, кто должен остаться на индивидуальном сроке, кто должен быть перенесён в следующий поток, а кто уже не должен продлеваться. Эту карту можно сделать в таблице вне сайта. Важны не персональные данные, а условия доступа: уровень, статус, auto-renew, источник регистрации и обещанный срок.
Если внутри одного уровня оказались разные коммерческие обещания, лучше не пытаться исправить это одним полем Expiration Date. Создайте отдельный уровень для нового правила и перенесите туда только тех пользователей, чьи условия совпадают с общей датой. Так проще объяснять результат и легче откатить ошибку.
Как менять дату без хаоса
Иногда дата потока переносится. Например, организаторы продлили доступ к материалам или, наоборот, закрывают набор раньше. В этом случае изменяется не только техническое поле. Нужно синхронно обновить описание уровня, страницу регистрации, письмо участнику, страницу аккаунта и внутреннюю заметку администратора. Если поменять только поле в админ-панели, пользовательские тексты начнут противоречить фактическому доступу.
Практичный порядок такой, особенно если уровень уже используется на рабочем сайте и связан с реальными платежами:
- Сделайте снимок текущего состояния уровня: название, дату, статус, описание и количество активных участников.
- Проверьте, нет ли у уровня auto-renew или активных gateway subscription ID, которые требуют отдельной сверки.
- Измените
Expiration Dateна staging-копии и проверьте тестового участника. - Обновите публичные тексты и email-шаблоны, чтобы они говорили ту же дату и тот же смысл.
- Перенесите изменение на рабочий сайт и сразу проверьте один активный аккаунт, одну закрытую страницу и одно сообщение для пользователя без доступа.
Не меняйте дату несколько раз подряд без записей. Для membership-сайта история действий администратора важна: по ней можно понять, почему один пользователь получил доступ дольше, а другой оказался в следующем потоке.
Что делать с участниками после завершения потока
После наступления общей даты у сайта обычно есть три варианта. Первый - оставить истёкшее членство как архивную запись и предложить пользователю зарегистрироваться в следующий поток. Второй - вручную создать новое членство для тех, кому доступ продлён по договорённости. Третий - перенести часть аудитории в другой уровень, например архивный или бесплатный, если такой сценарий предусмотрен правилами сайта.
Выбор зависит от обещания пользователю. Если доступ действительно закончился, не нужно скрытно реактивировать старый уровень, потому что в будущем будет трудно отличить исключения от ошибок. Если доступ продлён для всей группы, лучше изменить дату уровня и обновить сообщения. Если продление касается одного человека, используйте ручное управление членством и фиксируйте причину в заметках, чтобы не нарушить правила для остальных.
Откат спорной настройки
Откат должен быть подготовлен до изменения. Минимальный план: вернуть прежнюю дату или удалить hard expiration из уровня, очистить кеш, проверить тестового пользователя, сверить несколько реальных членств, обновить публичный текст и зафиксировать, почему изменение отменено. Если из-за настройки были изменены платежи или статусы участников, одного возврата поля может быть недостаточно. Тогда нужно отдельно сверить RCP, платёжный шлюз и историю членства.
Для активного membership-сайта безопасный откат - это не кнопка "назад", а последовательность: восстановить настройку, проверить доступ, объяснить пользователям изменение и убедиться, что платежи не разъехались с членством.
Как работает единая дата для всех участников уровня
Смысл add-on можно описать так: у выбранного membership level появляется фиксированная дата, и все членства, относящиеся к этому уровню, используют её как дату истечения. Официальная документация отдельно подчёркивает, что после наступления hard-set expiration членство становится expired и не может быть продлено как обычная активная подписка.
Что видит участник, зарегистрировавшийся поздно
Поздний участник получает тот же общий дедлайн, что и вся группа. Это не ошибка, а основной смысл продукта. Если на странице регистрации написано только "закрытый клуб" без объяснения срока, пользователь может ожидать полный индивидуальный период. Поэтому правильная настройка включает не только поле даты, но и пользовательский текст: доступ открыт до завершения потока, после этого требуется новый набор или отдельный уровень.
Что означает статус expired
Статус expired влияет на доступ к закрытому контенту. Если страница ограничена активным участником конкретного уровня, участник с истёкшим членством не должен видеть материал. Но если контент дополнительно открыт роли WordPress, другому уровню или ошибочно оставлен публичным, пользователь может сохранить доступ. Поэтому проверка результата всегда должна включать саму страницу, а не только поле даты в профиле.
Почему fixed date не равна платёжному расписанию
В membership-системах дата доступа и дата оплаты часто идут рядом, но это разные сущности. Restrict Content Pro хранит членство и его expiration, а платёжный шлюз хранит свои подписки, идентификаторы и следующие списания. Документация по редактированию членств предупреждает, что изменение даты в RCP может не изменить дату следующего платежа у процессора.
Для разовых сезонных уровней это обычно проще. Для auto-renew сценариев нужна осторожность: перед включением жёсткой даты проверьте, не получится ли так, что доступ закончился, а платёжный шлюз всё ещё ожидает регулярное списание. Если есть сомнение, используйте тестовый режим, документацию шлюза и отдельную сверку gateway ID в профиле участника.
Практический сценарий: курс с общей датой завершения доступа
Разберём сценарий, где Hard-set Expiration Dates действительно раскрывается. Есть образовательный сайт на WordPress, закрытый курс размещён в обычных страницах и записях, доступ открывается через Restrict Content Pro, а все участники одного потока должны потерять доступ одновременно после завершения программы. Новые участники могут присоединиться в процессе набора, но срок у них не индивидуальный.
Цель
Нужно создать отдельный уровень подписки для потока, закрыть материалы курса только для этого уровня, показать пользователю дату окончания и проверить, что после завершения членство перестаёт давать доступ к страницам курса. При этом старые уровни, бессрочные клиенты и администраторы не должны быть затронуты.
Подготовка
- Базовый Restrict Content Pro активен, add-on установлен и в форме уровня видно поле
Expiration Date. - Материалы курса собраны в отдельные страницы, категорию или список URL.
- Есть тестовый пользователь без прав администратора.
- На сайте настроена страница регистрации с
[register_form]или другим подтверждённым способом регистрации уровня. - Есть план текста, который объясняет общий срок доступа.
Шаги настройки
- Создайте новый уровень подписки в
Restrict > Membership Levelsили соответствующем разделе вашей версии. - Назовите уровень так, чтобы администратор понимал поток, но не перегружайте публичное название техническими пометками.
- Укажите стандартные параметры уровня: описание, access level, роль пользователя, цену или бесплатный режим.
- Заполните
Expiration Dateобщей датой завершения доступа. - Ограничьте страницы курса для участников этого уровня через блок ограничения доступа или shortcode.
- Добавьте на страницу личного кабинета или страницу курса вывод даты окончания через
[user_expiration], если этот shortcode подходит вашей версии и структуре страницы. - Создайте тестовую регистрацию и проверьте, что пользователь видит закрытый материал до истечения.
Пример простого блока на странице курса:
Доступ к материалам открыт до даты, указанной в вашем профиле.
Ваша дата окончания: [user_expiration]
Для пользователей с истёкшим членством можно подготовить отдельный текст:
[is_expired]
Ваш доступ к этому потоку завершён. Проверьте страницу следующего набора или обратитесь в поддержку.
[/is_expired]
Эти shortcode не заменяют настройку уровня. Они помогают объяснить пользователю состояние доступа. Если сам контент не ограничен правильно, сообщение не исправит логику доступа.
Проверка сценария
Войдите под тестовым пользователем, откройте страницу курса, страницу аккаунта и страницу регистрации. Проверьте три вещи: уровень назначен правильно, дата отображается ожидаемо, закрытый материал не доступен пользователю без нужного активного членства. Затем проверьте тот же URL в режиме инкогнито и под обычным зарегистрированным пользователем без уровня.
Мини-итог сценария: hard expiration работает как групповое правило. Уровень задаёт принадлежность, закрытые страницы проверяют активность членства, а пользовательский текст заранее объясняет общий срок доступа.
Проверка результата: админ-панель, тестовый пользователь и публичная часть
Проверка должна отвечать не на вопрос "сохранилось ли поле", а на вопрос "что реально произойдёт с доступом". Для этого нужно посмотреть на систему с трёх сторон: администратор видит членство и дату, тестовый пользователь видит свой доступ, публичная часть отдаёт правильное сообщение тем, у кого доступа нет.
Что проверить в админ-панели
Откройте профиль членства тестового пользователя. Проверьте уровень, статус, expiration date, auto-renew, gateway customer ID и gateway subscription ID, если это платный регулярный уровень. Не все поля будут важны для бесплатного потока, но для платного уровня они помогают понять, не расходятся ли данные Restrict Content Pro и платёжного шлюза.
Если пользователь добавлен вручную, убедитесь, что это именно членство в нужном уровне, а не просто роль WordPress. В документации по ручному добавлению членства описано, что выбор уровня автоматически обновляет цикл и expiration для этого членства. Это ещё одна причина проверять членство, а не только пользователя.
Что проверить в публичной части
- Страница закрытого материала доступна активному участнику нужного уровня.
- Та же страница недоступна пользователю без уровня.
- Пользователь с истёкшим членством видит понятное сообщение, если вы добавили блок для expired-состояния.
- Страница регистрации не обещает индивидуальный срок, если установлен общий дедлайн.
- Кеш не отдаёт закрытый контент после выхода из аккаунта или смены пользователя.
Таблица контрольных проверок
| Проверка | Где смотреть | Ожидаемый результат |
|---|---|---|
| Поле даты уровня | Restrict > Membership Levels |
Expiration Date сохранено в нужном уровне. |
| Назначение участника | Restrict > Memberships |
Тестовый пользователь находится в правильном уровне и имеет ожидаемый статус. |
| Закрытая страница | Публичная часть сайта | Активный участник видит материал, посторонний пользователь видит ограничение. |
| Пользовательское сообщение | Страница аккаунта или курса | Дата окончания или объяснение дедлайна отображаются без двусмысленности. |
| Платёжная сверка | Профиль членства и платёжный шлюз | Нет конфликта между окончанием доступа и ожидаемым списанием. |
Сообщения для участников до и после истечения доступа
Фиксированная дата может быть технически правильной и всё равно вызвать недовольство, если пользователь не понял условие. Поэтому текстовые сообщения - часть настройки, а не украшение. Читатель должен заранее увидеть, что он вступает в поток или сезон с общей датой завершения, а не покупает индивидуальный период.
Где показать дату окончания
Разместите дату или объяснение срока в трёх местах: описание уровня на форме регистрации, страница аккаунта или кабинета, письмо после активации членства. В Email Settings Restrict Content Pro поддерживает шаблонные теги, включая expiration, поэтому для писем лучше использовать подтверждённые теги вашей версии, а не вручную вписывать дату в каждый шаблон.
На странице сайта можно использовать [user_expiration], если нужно показать текущему пользователю его дату. Для группы с hard expiration это особенно удобно: пользователь видит, что дата относится к его членству, а не к абстрактному расписанию.
Что написать до завершения
Формулировка должна быть короткой и честной: доступ к материалам потока открыт до общей даты завершения; поздняя регистрация не продлевает доступ; после завершения потребуется следующий поток или отдельное решение. Не стоит обещать "полный месяц", "годовой доступ" или "автоматическое продление", если это не соответствует настройке уровня.
Что показать после истечения
Для участника с истёкшим членством полезен отдельный блок: что произошло, где искать следующий набор, как связаться с поддержкой, что делать, если оплата прошла, но доступ не открыт. Не обвиняйте пользователя и не показывайте системные детали. Ему нужен понятный следующий шаг.
Простой вариант через shortcode:
[is_expired]
Доступ к текущему потоку завершён. Если вы считаете, что это ошибка, напишите в поддержку и укажите email аккаунта.
[/is_expired]
Не используйте этот блок как единственную защиту контента. Он показывает сообщение определённой группе пользователей, но сама защита страниц должна быть настроена через правила Restrict Content Pro.
Производительность, кеш и безопасность доступа
Hard-set Expiration Dates не должен заметно утяжелять публичную часть сайта сам по себе: его задача связана с датой членства и проверкой уровня. Но membership-сайты часто используют кеш, CDN, оптимизацию страниц и плагины безопасности. Именно они могут создать эффект, будто дата не сработала или закрытый материал виден не тому пользователю.
Кеширование страниц с ограниченным доступом
Закрытые страницы, страницы аккаунта, регистрации, оплаты, обновления карты и любые страницы с персональными shortcode лучше исключить из полного HTML-кеша. Если кеш отдаёт одну и ту же версию страницы разным посетителям, участник может увидеть чужое состояние или гость увидит фрагмент закрытого материала. Это относится не только к Hard-set Expiration Dates, но именно при общем дедлайне проблема становится заметнее: много участников одновременно меняют состояние доступа.
WP-Cron и фоновые проверки
WordPress использует планировщик WP-Cron, который срабатывает при посещениях сайта. Для сайтов с низким трафиком, агрессивным кешем или заблокированным wp-cron.php фоновые события могут задерживаться. Если членство не меняет статус сразу в ожидаемый момент, проверьте не только поле даты, но и работу планировщика.
Безопасный порядок такой: открыть Site Health, проверить события через надёжный инструмент администратора, сверить настройки хостинга и при необходимости настроить серверный cron по документации WordPress или хостинга. Не добавляйте самодельные cron-сниппеты ради этой задачи: ошибка в таком коде может создать дублирующиеся события.
Права доступа и роли
Уровень подписки и роль WordPress - разные механизмы. В документации по membership levels указано, что уровень может назначать роль пользователю, а при истечении членства роль может быть удалена. Но если вы вручную выдали пользователю роль, которая сама по себе открывает контент, он может сохранить доступ независимо от членства. При диагностике всегда проверяйте: правило страницы, членство, роль, кеш и фактический вход пользователя.
Почему дата не сработала или доступ всё ещё открыт
Диагностику лучше вести от симптома. Не начинайте с переустановки add-on и не правьте базу данных вручную. В membership-сайте проблема часто находится не в одном поле, а в связи между уровнем, статусом членства, ограничением страницы, кешем и платёжным шлюзом.
| Симптом | Возможная причина | Что проверить | Как исправить |
|---|---|---|---|
Поле Expiration Date не видно. |
Add-on не активен, открыт не тот экран или версия интерфейса использует другое название меню. | Список активных плагинов, экран уровня, документацию для установленной версии. | Активировать add-on, открыть редактирование уровня, не редактировать базу вручную. |
| Поздний участник получил короткий срок. | Это ожидаемая логика hard expiration для всего уровня. | Описание уровня, форму регистрации, дату уровня и список участников. | Объяснить общий срок, закрыть набор раньше или создать новый уровень для следующего потока. |
| После даты пользователь всё ещё видит материал. | Контент открыт другим правилом, ролью WordPress или кешем. | Правило страницы, shortcode, роль пользователя, статус членства, кеш авторизованных страниц. | Исправить правило ограничения, очистить кеш, исключить персональные страницы из полного кеша. |
| Пользователь оплатил, но доступ закрыт. | Расхождение между RCP и платёжным шлюзом, webhook не обработан или hard date уже наступила. | Статус платежа, gateway ID, webhook-логи, статус членства, дату уровня. | Сверить платёж, вручную восстановить доступ только после проверки, исправить webhook или сценарий следующего потока. |
| Письма о продлении путают участников. | Смешаны expiration reminders и renewal reminders, либо шаблон обещает продление там, где его нет. | Настройки Restrict > Settings > Emails, auto-renew, шаблоны писем. |
Разделить сообщения для auto-renew и non-auto-renew, переписать текст под общий дедлайн. |
| Неясно, можно ли продлить истёкший уровень. | Официальная логика Hard-set Expiration Dates говорит, что после даты членство expired и не может быть продлено обычным образом. | Статус уровня, текущую дату уровня, наличие следующего потока или нового уровня. | Создать новый уровень или новое членство, а не пытаться скрытно продлить старый поток. |
Когда лучше откатить настройку
Откат нужен, если вы включили hard expiration на уровне с активными регулярными платежами и обнаружили расхождение с платёжным расписанием, если пользователи получили другой срок, чем был обещан публично, или если закрытые страницы завязаны на роли так, что дата членства не управляет доступом. В таком случае верните прежние параметры уровня, очистите кеш, зафиксируйте изменения в заметках и только потом проектируйте новую структуру уровней.
FAQ по Restrict Content Pro Hard Expiration Dates
Можно ли сделать одну дату окончания для всех участников уровня?
Да. Это основная задача add-on: дата задаётся на уровне membership level, и участники этого уровня истекают в один общий день независимо от даты регистрации.
Что будет с пользователем, который вступил почти перед завершением?
Он получит тот же общий дедлайн. Если это нежелательно, не используйте hard expiration для такого уровня. Создайте новый поток, закройте позднюю регистрацию или оставьте обычную длительность от даты вступления.
Где находится настройка после установки?
В официальной документации указано, что поле Expiration Date появляется на экранах добавления и редактирования уровней. Путь может называться Restrict > Subscription Levels или Restrict > Membership Levels в зависимости от версии интерфейса.
Можно ли использовать add-on с регулярными платежами?
Техническое поведение зависит от вашей конфигурации, но с auto-renew нужно быть особенно осторожным. Документация Restrict Content Pro предупреждает, что изменение expiration date не обязательно меняет дату следующего платежа у платёжного шлюза. Перед запуском обязательно сверяйте RCP и gateway.
Как показать пользователю дату окончания?
Для текущего пользователя можно использовать shortcode [user_expiration], если он подходит вашей версии и странице. В письмах используйте подтверждённые template tags из настроек email, а в описании уровня пишите понятное человеческое условие доступа.
Почему истёкший участник всё ещё видит закрытый контент?
Проверьте, не открыт ли контент другим правилом: access level, ролью WordPress, paid status, другим membership level или кешем. Также убедитесь, что пользователь действительно смотрит страницу без административных прав.
Можно ли задать разные даты для разных уровней?
Да, логика add-on привязана к уровню. Для разных потоков обычно лучше создавать разные membership levels, чтобы не смешивать участников с разными сроками.
Нужен ли PHP-код для настройки?
Для обычного сценария не нужен. Кодовые фильтры Restrict Content Pro существуют для разработчиков, но они не должны заменять поле Expiration Date. Если требуется нестандартная логика, делайте её на staging-копии, через маленький site-specific plugin или проверенный snippets-инструмент, без правки ядра WordPress, RCP или add-on.
Когда стоит использовать Restrict Content Pro Hard Expiration Dates
Этот add-on будет удачным выбором, если вы уже используете Restrict Content Pro и вам нужна понятная модель "уровень подписки действует до общего дедлайна". Он особенно полезен для потоков, сезонных программ, временных закрытых разделов и материалов мероприятия. В таких задачах единая дата делает администрирование проще, а правила доступа - предсказуемее.
Он не подойдёт, если вы обещаете каждому пользователю полный индивидуальный период, активно используете сложные auto-renew сценарии без отдельной сверки платёжного шлюза или хотите управлять датами каждого участника вручную. В этих случаях лучше оставить duration-логику, создать отдельные уровни или выбрать другой membership-инструмент.
Перед рабочим запуском проверьте уровень, закрытые страницы, тестового пользователя, сообщения для истёкших участников, работу кеша и расхождение с платежами. Когда сценарий подтверждён на копии сайта и вы понимаете, какие участники попадут под общий дедлайн, можно перейти к скачиванию Restrict Content Pro Hard Expiration Dates и тестировать add-on в своей WordPress-сборке.
Практический вывод простой: Hard-set Expiration Dates решает одну задачу хорошо, если задача сформулирована честно. Не используйте его как скрытый способ "подрезать" срок доступа. Используйте его как прозрачный инструмент для потоков и сезонов, где общий конец доступа является частью предложения.


