Ограничение контента по подписке в WordPress: чек-лист
Перед запуском подписки проверьте не только страницу оплаты. Закрытый материал может утечь через архив, поиск, REST API, кеш или уже выданную ссылку — этот чек-лист поможет найти такие дыры до продакшена.

В WordPress 6.x ограничение страницы по подписке ещё не означает, что материал закрыт: он может остаться в поисковой выдаче, попасть в кеш или открыться по прямой ссылке. Перед продакшеном проверьте весь маршрут — от оформления подписки до истечения доступа и повторного запроса страницы.
Сначала определите, что именно закрываете
Составьте список типов контента: отдельные страницы, записи, рубрики, файлы, видео, архивы. Для каждого укажите, кому он доступен: гостю, активному подписчику, подписчику конкретного тарифа или администратору. Если правила сводятся к фразе «платное — закрыть», команда быстро обнаружит исключения: например, бесплатный анонс должен быть виден всем, а полный материал — только участникам тарифа.
Зафиксируйте ожидаемое поведение для четырёх состояний: посетитель не вошёл; вошёл, но не оплатил; подписка активна; подписка истекла или отменена. Отдельно решите, сохраняется ли доступ после отмены до конца уже оплаченного периода. Это не мелочь интерфейса, а правило, по которому система должна принимать решение.
Проверяйте не только, что видит подписчик. Проверяйте, что может получить человек без подписки, если знает URL.
Чек-лист перед запуском
- Проверьте правила доступа. Откройте материал в режиме инкогнито, под аккаунтом без подписки и под аккаунтами с разными тарифами. Проверьте прямую ссылку и переход из меню. Ожидаемый результат: каждый статус получает именно тот вариант страницы, который вы описали в правилах.
- Проверьте соседние страницы. Найдите материал через поиск WordPress, архив рубрики, теги, блоки «похожие записи» и карту сайта, если она есть. Сам заголовок и анонс могут быть публичными по замыслу, но полный текст не должен появляться в общедоступной выдаче. Результат: публичные фрагменты соответствуют выбранной модели доступа.
- Проверьте файлы отдельно. Если подписка даёт доступ к PDF, аудио или видео, попробуйте открыть адрес файла без входа в аккаунт. Ограничение страницы не обязательно ограничивает файл, размещённый в публичной медиатеке или на внешнем хранилище. Результат: прямой URL не раскрывает платный материал неавторизованному посетителю.
- Проверьте кеш. Откройте страницу сначала как подписчик, затем в приватном окне; повторите в обратном порядке. Если перед сайтом стоит CDN или кеширующий плагин, используйте именно его обычный режим. Результат: гостю не показывается закешированный полный текст, а подписчик не получает постоянно устаревшую страницу-заглушку.
- Проверьте жизненный цикл подписки. На тестовом тарифе пройдите оформление, продление, отмену и истечение доступа. Не ограничивайтесь кнопкой отмены: выясните, когда именно меняется статус и что происходит при неудачном продлении. Результат: доступ меняется в ожидаемый момент, а повторный вход не возвращает право, которое уже закончилось.
- Проверьте ошибки оплаты. Пройдите сценарии отказа платежа, закрытия страницы оплаты и повторной отправки формы. Убедитесь, что пользователь видит понятный статус, а незавершённый платёж не открывает контент. Результат: доступ связан с подтверждённым состоянием подписки, а не просто с переходом на страницу благодарности.
- Проверьте роли пользователей. Убедитесь, что подписчик не получает права редактора или администратора, а обычный редактор не может случайно назначить себе доступ к платному тарифу через интерфейс управления. Результат: права на контент соответствуют роли и статусу подписки.
- Проверьте мобильный путь и письма. Оформите тестовую подписку с телефона, затем найдите в письмах ссылки на оплату, восстановление доступа и материал. Результат: кнопки доступны на небольшом экране, ссылки ведут на нужный сайт и не раскрывают контент без проверки доступа.
Где обычно ломается схема
Самая частая ошибка — проверять только шаблон записи. WordPress может отдавать тот же контент через несколько маршрутов: основной URL, архив, поиск, вложение или интеграцию, которую добавил плагин. Набор доступных маршрутов зависит от темы, плагинов и конфигурации сайта, поэтому универсальный список URL для проверки не заменит тестирование именно вашего проекта.
Вторая ловушка — кеширование персонализированных страниц. Если кеш не различает посетителей, ответ, сформированный для подписчика, может получить гость. Отключать кеш для всего сайта обычно дорого: страницы будут отвечать медленнее и чаще обращаться к базе. Вместо этого выясните, как ваш кеширующий слой обрабатывает авторизацию и страницы с ограничением, и проверьте результат для обоих типов посетителей.
Третья — считать закрытым то, что просто спрятано в интерфейсе. Скрытая кнопка или фрагмент текста не защищают данные, если полный материал всё ещё отдаётся в HTML или лежит по доступному адресу. Проверяйте фактический ответ сайта, а не только вид страницы.
Подходы к закрытию контента
| Подход | Что выигрываете | Чем платите | Что тестировать |
|---|---|---|---|
| Ограничение отдельных записей | Простые правила для небольшого каталога | Ручная настройка каждой публикации и риск пропустить новую | Новые записи, анонсы, архивы и прямые URL |
| Ограничение по рубрике или тарифу | Правила проще применять к большой группе материалов | Ошибочная рубрика может открыть или закрыть сразу много страниц | Перемещение записи, исключения и пересечения тарифов |
| Проверка доступа на уровне приложения или интеграции | Можно учитывать сложные сценарии и связанные сервисы | Больше компонентов, конфигурации и точек отказа | API, кеш, файлы и изменение статуса подписки |
Выбирайте самый простой подход, который точно выражает правила вашего продукта. Если тарифы отличаются только набором материалов, групповые правила обычно легче сопровождать. Если доступ зависит от срока, пользователя или внешней оплаты, до запуска отдельно проверьте интеграцию и обработку смены статуса. Не добавляйте собственные доработки, пока не ясно, какое конкретно требование они закрывают.
Как проверить сайт без догадок
Сделайте тестовую матрицу: строки — состояния пользователя, столбцы — способы добраться до материала. Включите прямую ссылку, поиск, архив, файл и мобильный сценарий. Для каждого сочетания запишите ожидаемый результат и фактический. Так проще заметить не только ошибку доступа, но и ошибку продукта: например, когда платный участник видит заглушку из-за кеша.
- Проверьте сценарий на копии сайта или тестовом окружении, если оно есть.
- Используйте отдельные тестовые аккаунты с разными статусами, а не меняйте права на рабочей учётной записи.
- После изменения правил повторите проверки прямого URL и кеша.
- Запишите, какие плагины управляют подпиской, кешем и защитой файлов, и кто отвечает за их обновление.
Подводный камень в продакшене: обновление плагина или смена темы может изменить шаблон, правила кеширования или способ вывода анонсов. После таких изменений повторяйте ключевые проверки, а не полагайтесь на то, что закрытый контент «уже однажды работал».
Что делать дальше
Перед запуском пройдите тестовую матрицу на копии сайта, затем повторите короткий набор проверок на боевом домене: гость, активный подписчик, истёкшая подписка, прямой URL и кеш. После запуска следите за ошибками оплаты и обращениями о пропавшем доступе. Если в проекте есть внешние файлы или CDN, добавьте их в регламент проверки отдельно.
Сноска: кеширование — сохранение готового ответа или страницы, чтобы не собирать её заново при каждом запросе. Для закрытого контента важно, чтобы кеш не отдавал ответ одного посетителя другому.
Тендерный специалист 44-ФЗ / 223-ФЗ: Разбор PDF-документации закупки, поиск «заточек» под поставщика, чек-лист заявки.
Спросить за 20 ₽Источники: WordPress Developer Resources: Roles and Capabilities, WordPress Developer Resources: Hardening WordPress
Частые вопросы
Достаточно ли закрыть запись настройкой плагина подписки?
Может ли гость увидеть платную страницу через кеш?
Что происходит с доступом после отмены подписки?
Как проверить, что PDF закрыт так же, как страница?
Нужно ли закрывать анонсы и заголовки от поисковых систем?
Можно ли гарантировать защиту контента только настройкой WordPress?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.