Ограничение содержимого дает вам возможность настроить несколько ограничений для любого сообщения или страницы до тех пор, пока пользователь не выполнит все указанные требования.

Версия плагина: 1.3.0
 
WordPress плагин GamiPress Restrict Content

Особенности плагина

Ограничьте отображаемый контент, замените ссылки или изображения нужным текстом или полностью ограничьте доступ и перенаправьте пользователей, которые не соответствуют требованиям.

Ограничьте часть контента в любом месте, в том числе в строке на любой странице или публикации, с помощью простого шорткода или на любой боковой панели с помощью настраиваемого виджета.

Кроме того, это дополнение имеет возможность ограничивать публикации и части контента, расходуя баллы, и присуждать эти баллы автору поста, что делает ограничение контента вашим дополнением для продажи контента.

Спецификации:

Дата выхода: 11-10-2020
Дата обновления: 04-06-2026
Тип расширения: Платный
Лицензия: GPL
Тематика: Доступ и безопасность для GamiPress
Совместимость: W5.x W6.x
Включает в себя: Плагин
Языковые пакеты: Английский
Разработчик: GamiPress

Рейтинг:
4.4605809128631 1 1 1 1 1 (Оценок: 241)
4.4605809128631 241

Скачивание по подписке!

Вам необходимо авторизоваться на сайте и приобрести клубную подписку!

Поделись с друзьями!

 

Руководство по настройке GamiPress Restrict Content для закрытого контента в WordPress

GamiPress Restrict Content нужен не для обычного скрытия страницы от случайного посетителя, а для сценариев, где доступ зависит от игровой логики сайта: баллов, достижений, рангов, выполненных требований или разового расходования внутренней валюты. В этом руководстве разберём, как подготовить сайт, как выбрать правильный режим ограничения, как настроить сообщение для пользователя, как проверить результат и что делать, если закрытый материал всё равно виден.

Материал написан для администратора WordPress, который уже понимает, зачем на сайте используются баллы, значки, уровни или обучающие задания. Мы не будем повторять рекламное описание плагина. Вместо этого пройдём практический путь: от проверки базового GamiPress до настройки закрытого урока, фрагмента статьи, изображения, ссылок и блока в боковой области.

Главная идея проста: ограничение контента должно помогать пользователю двигаться по сценарию, а не превращаться в случайную стену. Если посетитель не понимает, какие действия открывают материал, он не будет копить баллы, проходить задания или возвращаться к закрытой странице. Поэтому в руководстве много внимания уделено сообщениям, проверке требований, роли тестовых аккаунтов и безопасному откату настроек.

GamiPress Restrict Content в сценарии закрытого контента WordPress
Общая логика: правило доступа связывает баллы, достижения или ранг пользователя с видимостью материала на сайте.

Как работает связка баллов, достижений, рангов и доступа

GamiPress Restrict Content расширяет базовый GamiPress и использует уже созданные игровые сущности. Это важно: дополнение не заменяет систему баллов, достижений и рангов. Оно опирается на неё и решает отдельную задачу - что показывать пользователю, пока он не выполнил требования, и что открыть после выполнения.

В типичном сценарии сначала создаётся один или несколько типов баллов, например кредиты, очки опыта или жетоны. Затем администратор настраивает способы начисления и списания этих баллов. Отдельно создаются достижения и ранги, которые могут выдаваться за выполнение шагов, достижение баланса или прогресс по требованиям. Только после этого имеет смысл закрывать страницу, часть записи или виджет, потому что правило доступа должно ссылаться на уже существующую игровую механику.

Дополнение добавляет к публичным типам записей метабокс GamiPress - Restrict Content. В нём включается само ограничение, выбираются требования и настраивается способ скрытия. Для небольших фрагментов внутри записи используется шорткод [gamipress_restrict_content]. Для условного показа без сохранения постоянного доступа есть отдельные шорткоды [gamipress_show_content_if] и [gamipress_hide_content_if]. Это не одно и то же, и путаница между ними часто приводит к неправильным ожиданиям.

Ключевое различие такое: Restrict Content может зафиксировать доступ после разблокировки, а условные Show/Hide проверяют текущее состояние пользователя. Если достижение позже отозвано, условный блок снова изменит видимость. Для закрытого урока, который должен остаться доступным после прохождения задания, чаще подходит Restrict Content. Для временной подсказки, которая нужна только пока пользователь не достиг ранга, удобнее Show/Hide.

Карта логики GamiPress Restrict Content: требования, правило доступа и результат
Сначала создаются игровые условия, затем правило доступа, затем проверяется результат для разных ролей и аккаунтов.

Кому подойдёт такой тип ограничения

Плагин особенно полезен сайтам, где закрытый материал является частью вовлечения, обучения или программы лояльности. Это может быть образовательный портал с уроками, сообщество с уровнями участников, база знаний для активных пользователей, клуб с бонусными материалами или магазин, где часть инструкций открывается после накопления внутренних баллов. В таких проектах доступ не сводится к оплате подписки. Пользователь должен что-то сделать внутри сайта: набрать баланс, получить значок, дойти до ранга или потратить накопленные очки.

GamiPress Restrict Content хорошо подходит, когда у вас уже есть понятная игровая экономика. Например, участник получает баллы за прохождение тестов, комментарии, покупки, входы на сайт или активность в сообществе. Закрытая страница становится наградой: "набери 100 кредитов", "получи значок выпускника", "дойди до ранга Expert" или "потрать 20 жетонов, чтобы открыть материал". В этом случае ограничение не выглядит искусственным, потому что оно связано с понятным действием.

Плагин может не подойти, если нужна полноценная платная подписка с тарифами, регулярными платежами, управлением счетами и личным кабинетом участника. Для таких задач обычно смотрят в сторону membership-плагинов. Restrict Content внутри GamiPress сильнее именно там, где доступ зависит от игровых достижений и внутренней активности, а не от классической подписки.

Ещё одно ограничение касается прямой защиты файлов. Если вы закрываете абзац, ссылку или изображение в записи, плагин управляет выводом контента на странице. Но статический файл, загруженный в медиатеку, может иметь собственный прямой URL. Для действительно закрытых PDF, видеоархивов или файлов с приватными данными нужна отдельная серверная защита, защищённое хранилище или плагин, который работает с файлами на уровне сервера. В статье мы будем рассматривать безопасный сценарий для страниц, фрагментов, ссылок и изображений, а не обещать абсолютную защиту любых медиафайлов.

Что проверить перед установкой и включением правил

Перед установкой дополнения нужно убедиться, что базовый GamiPress уже настроен и не содержит логических дыр. Самая частая ошибка - закрывать материал по баллам или рангу, которые ещё не начисляются в реальном пользовательском пути. В админке всё может выглядеть правильно, но посетитель никогда не откроет материал, потому что событие начисления не срабатывает.

Проверьте базовые игровые сущности

Начните с типов баллов. У каждого типа есть название и slug, который используется во внутренних ссылках и параметрах шорткодов. Если в примере или шорткоде указан credits, а ваш тип баллов имеет другой slug, правило не будет работать так, как ожидается. То же относится к достижениям и рангам: в метабоксе проще выбрать объект из интерфейса, а в шорткоде часто приходится указывать идентификатор или точный параметр.

  • Создайте или проверьте тип баллов, который будет использоваться для доступа.
  • Убедитесь, что баллы реально начисляются тестовому пользователю за нужное действие.
  • Проверьте достижения: есть ли у них требования, можно ли их получить, не скрыты ли они там, где пользователь должен видеть прогресс.
  • Проверьте ранги: приоритеты должны идти в правильном порядке, иначе пользователь может застрять на неподходящем уровне.
  • Подготовьте минимум два тестовых аккаунта: один без доступа и один с нужными баллами, достижением или рангом.

Разделите приватность и игровое ограничение

Не смешивайте обычную приватность WordPress и игровые условия. Если запись стоит в статусе Private, её поведение будет зависеть от прав пользователя и стандартной логики WordPress. Если запись опубликована, но закрыта через GamiPress Restrict Content, она остаётся частью публичного сайта, а плагин решает, какой вывод показать конкретному пользователю. Для обучающих и маркетинговых сценариев обычно удобнее второй вариант, потому что страницу можно индексировать, показывать отрывок, объяснять требования и мотивировать посетителя войти в аккаунт.

Перед включением правил решите, что именно должен видеть гость, зарегистрированный пользователь без прогресса и пользователь с доступом. Если эта матрица не продумана заранее, потом сложно понять, ошибка это или просто неверно выбранный режим.

Проверьте кеш и роли

Кеширование страниц может мешать любому персонализированному выводу. Если одна и та же страница должна показывать разный контент гостю и авторизованному пользователю, полный кеш страницы обязан учитывать состояние входа в аккаунт. На тестовом сайте временно отключите агрессивный кеш для закрываемой страницы или добавьте исключение, если ваш кеш-плагин это позволяет.

Роли тоже важны. В GamiPress Restrict Content есть возможность вручную открыть доступ пользователям по роли или конкретным ID. Это удобно для администраторов, редакторов, наставников и службы поддержки, но опасно, если случайно указать слишком широкую роль. Например, открытие по роли Subscriber фактически даёт доступ всем обычным зарегистрированным пользователям, даже если они не выполнили игровые требования.

Установка и первичная проверка после активации

Установка проходит как у обычного ZIP-плагина WordPress: в админ-панели откройте Plugins, выберите Add New, загрузите архив и активируйте дополнение. До этого должен быть установлен и активирован базовый GamiPress, потому что Restrict Content не имеет смысла без его типов баллов, достижений, рангов и журналов.

После активации не начинайте сразу закрывать важные страницы. Создайте тестовую запись или черновик, опубликованный только на закрытом тестовом URL. В редакторе проверьте, появился ли метабокс GamiPress - Restrict Content. Если метабокс не виден, откройте настройки отображения панелей редактора, проверьте тип записи и убедитесь, что этот тип публичный. Документация указывает, что метабокс добавляется на зарегистрированные типы записей с публичным доступом, поэтому закрытый служебный тип может не получить такой интерфейс.

Первичная проверка должна быть короткой:

  1. Создайте простую запись с двумя абзацами и тестовой ссылкой.
  2. Включите опцию Restrict в метабоксе GamiPress.
  3. Добавьте одно понятное требование, например достижение или баланс баллов.
  4. Настройте мягкое ограничение контента, а не полное перенаправление.
  5. Откройте страницу в отдельном браузере как гость и как тестовый пользователь.
  6. Выдайте пользователю нужные баллы или достижение и обновите страницу.

Такой тест показывает сразу три вещи: виден ли метабокс, срабатывает ли правило и не мешает ли кеш. Если вы начнёте с большой страницы, WooCommerce-товара, урока LMS или страницы с конструктором, искать причину ошибки будет заметно сложнее.

Настройка требований: какой путь должен пройти пользователь

Раздел требований определяет, почему пользователь имеет или не имеет доступ. В документации указаны основные варианты: баллы, ранг, достижения, достижения определённого типа и все достижения определённого типа. В интерфейсе эти требования добавляются через кнопку Add Requirement, а логика похожа на другие элементы GamiPress: шаги, начисления баллов и требования рангов.

Требование по заработанным баллам

Такой вариант подходит для накопительной механики. Пользователь не тратит баллы на открытие материала, а доказывает свой прогресс текущим или заработанным состоянием. Например, доступ к продвинутому уроку появляется после накопления 300 очков опыта. Это хороший сценарий для курсов, форумов, комьюнити и внутренней базы знаний.

При настройке обратите внимание на тип баллов. У сайта может быть несколько кошельков: кредиты, опыт, монеты, репутация. Неправильный тип баллов создаёт странную ситуацию: пользователь видит, что у него достаточно одних очков, но правило проверяет другие. В сообщении ограничения лучше прямо назвать нужный тип баллов человеческим языком.

Требование по достижению

Достижение удобно использовать, когда доступ зависит не от количества баллов, а от завершённого действия. Например, пользователь должен пройти вводный тест, заполнить профиль, завершить первую задачу или получить значок участника. В этом случае достижение становится понятной границей между этапами.

Если требуется несколько достижений, заранее решите, должен ли пользователь получить все перечисленные элементы или достаточно одного достижения определённого типа. Документация GamiPress Restrict Content различает отдельные достижения, количество достижений типа и все достижения типа. Для пользователя эти варианты ощущаются по-разному. "Получите любой значок раздела" и "соберите все значки раздела" - разные обещания и разная сложность.

Требование по рангу

Ранг хорошо работает для долгих траекторий: новичок, участник, эксперт, наставник. В GamiPress у рангов есть приоритет, и этот приоритет определяет порядок движения. Если доступ к закрытому материалу зависит от ранга, сначала проверьте, что тестовый пользователь может реально перейти на нужный уровень. В поддержке GamiPress встречаются вопросы, где проблема была не в закрытом контенте, а в различии между событием "заработать сумму баллов" и состоянием "достичь баланса", а также в приоритетах рангов.

Не используйте ранг как грубую замену роли WordPress. Роль описывает права в системе, а ранг - игровой прогресс. Для редакторов, наставников и администраторов лучше использовать ручное открытие по роли или отдельный тестовый обход, а не присваивать им игровой ранг только ради просмотра закрытой страницы.

Разблокировка через расходование баллов

Отдельный режим позволяет пользователю получить доступ, потратив баллы. В документации он встречается в двух формах: как самостоятельная разблокировка через расходование баллов и как дополнительная возможность к выполнению требований. В первом случае баллы работают как внутренняя цена доступа. Во втором пользователь может либо выполнить требования, либо открыть материал расходованием.

Этот режим нужно объяснять особенно аккуратно. Пользователь должен видеть, сколько баллов требуется, какой тип баллов будет списан и что произойдёт после нажатия кнопки. Официальная документация указывает, что после завершения процесса пользователь перенаправляется к разблокированной записи. Поэтому на тесте проверьте не только сам доступ, но и страницу, куда попадает пользователь после действия.

Настройка требований GamiPress Restrict Content по баллам достижениям и рангу
Выбор требований должен соответствовать реальному пути пользователя: накопление, достижение, ранг или расходование баллов.

Способы ограничения: доступ, контент, ссылки и изображения

После требований нужно выбрать, как именно закрывать материал. Это самая практическая часть настройки, потому что один и тот же набор требований может вести к разному пользовательскому опыту. Документация выделяет четыре типа ограничений: Access, Content, Links и Images.

Access: полное ограничение страницы

Режим Access самый жёсткий. Если пользователь не соответствует требованиям, он не получает доступ к записи и может быть отправлен на другую страницу. Такой вариант уместен для страниц, где даже отрывок раскрывает слишком много, или где пользователь должен сначала увидеть общую страницу с объяснением требований.

Минус режима в том, что он хуже подходит для мягкого вовлечения. Если посетителя сразу перенаправить, он может не понять, какой именно материал был закрыт и что нужно сделать. Поэтому для обучающих страниц часто лучше начать с частичного ограничения контента и понятного сообщения, а полный Access оставить для материалов, где прямой просмотр действительно нежелателен.

Content: частичный вывод записи

Режим Content закрывает содержимое записи для тех, кто не выполнил требования. В документации перечислены варианты замены: показать текст до тега <!-- more -->, заменить контент отрывком или обрезать до заданного числа символов. Это самый гибкий режим для статей, уроков, инструкций и закрытых материалов с публичным вступлением.

Для большинства сайтов стоит начать именно с него. Сначала покажите вступление, объясните ценность материала, затем выведите сообщение: какие баллы, достижение или ранг нужны для открытия. Если используется обрезка по символам, проверьте страницу на мобильном устройстве. Иногда обрезанный текст выглядит неаккуратно, особенно если рядом выводятся блоки конструктора или вложенные шорткоды.

Links: замена ссылок

Ограничение ссылок полезно, когда основной текст можно оставить открытым, но кликабельные переходы нужно закрыть. Например, вы публикуете обзор учебного модуля, а ссылки на файлы, приватные страницы или бонусные материалы заменяете сообщением. В настройках можно задать отдельный текст для пользователей без доступа и гостей.

Этот режим требует аккуратной проверки. Если ссылка ведёт на публичный файл в медиатеке, замена ссылки в тексте не всегда означает защиту самого файла от прямого URL. Для обычной мотивационной механики этого достаточно, но для конфиденциальных материалов используйте более строгую схему хранения.

Images: скрытие изображений

Ограничение изображений подходит для галерей, визуальных подсказок, схем, бонусных иллюстраций и учебных карточек. Пользователь видит текстовое объяснение вместо изображения, пока не выполнит требования. В changelog-источниках вокруг продукта встречается упоминание доработок, связанных с ограничением изображений, поэтому этот режим стоит отдельно тестировать на вашей теме и редакторе.

Проверьте не только одиночное изображение в редакторе, но и обложку записи, галерею, блок конструктора и lazy loading. Если картинка загружается сторонним блоком или через нестандартный шаблон темы, замена может работать не так, как в обычном контенте записи. В таком случае выбирайте режим Content или закрывайте саму страницу целиком.

Шорткоды, блоки и виджеты: когда защищать фрагмент, а не всю запись

Не каждый закрытый сценарий требует метабокса на уровне записи. Иногда нужно спрятать только фрагмент внутри открытой страницы: бонусный абзац, ссылку на задание, блок с подсказкой или часть инструкции. Для этого используется шорткод [gamipress_restrict_content]. У него есть параметры для способа разблокировки, баллов, типа баллов, достижений, рангов, сообщения для пользователя, сообщения для гостя, ручного доступа по роли и ручного доступа конкретным пользователям.

Самое важное правило - закрывающий шорткод обязателен. Если забыть [/gamipress_restrict_content], поведение страницы станет непредсказуемым. В базовой документации GamiPress также есть отдельная страница о shortcode errors: администраторы с правами управления GamiPress могут видеть уведомления о пропущенных атрибутах или неверных значениях. Обычные посетители такие технические уведомления видеть не должны.

Пример фрагмента, который открывается за баллы

Ниже пример для учебного материала, где пользователь тратит внутренние кредиты, чтобы открыть дополнительный разбор. Значения points_type и points нужно заменить на ваши.

[gamipress_restrict_content id="lesson-bonus-01" unlock_by="expend_points" points="50" points_type="credits" message="Этот бонусный разбор можно открыть за 50 кредитов." guest_message="Войдите в аккаунт, чтобы открыть бонусный разбор за кредиты."]
Здесь находится закрытый бонусный разбор, видимый после разблокировки.
[/gamipress_restrict_content]

Параметр id не стоит оставлять случайным, если один и тот же закрытый фрагмент повторяется на нескольких страницах. Документация объясняет, что одинаковый идентификатор позволяет открыть связанные порции контента вместе, а разные идентификаторы требуют отдельной разблокировки. Это удобно для серии уроков, где одна оплата баллами должна открыть один и тот же бонус в разных местах.

Когда выбрать Show/Hide Content If

Шорткоды [gamipress_show_content_if] и [gamipress_hide_content_if] лучше использовать для динамических подсказок. Например, показать блок "вам осталось получить ещё один значок" до достижения цели или скрыть стартовую подсказку после получения нужного ранга. Их логика основана на текущем состоянии пользователя. Если состояние изменится, вывод тоже изменится.

Restrict Content лучше для наградного доступа, где пользователь однажды открыл фрагмент и ожидает, что он останется доступным. Условные шорткоды лучше для интерфейсных подсказок, прогресса и временных сообщений. Не заменяйте один механизм другим без понимания, должен ли доступ сохраняться после разблокировки.

Виджеты и блоки в боковой области

Документация Restrict Content перечисляет виджеты: ограниченный фрагмент, список закрытых записей, список открытых пользователем записей, вывод требований конкретной записи, Show Content If и Hide Content If. Они полезны для сайдбара, кабинета участника или страницы прогресса. Например, рядом с уроком можно показать список материалов, которые пользователь уже открыл, и список материалов, которые ещё закрыты.

Если тема использует блочные области виджетов, проверьте, как именно выводятся эти элементы в редакторе и публичной части. Старые виджеты, блоки и шорткоды могут сосуществовать, но их лучше не смешивать хаотично. Для одной задачи выберите основной способ вывода и придерживайтесь его, чтобы потом легче искать ошибку.

Общая страница требований и списки закрытых материалов

Когда на сайте появляется не одна закрытая запись, а целая библиотека материалов, пользователю нужен не только запрет, но и навигация. Он должен понимать, какие материалы уже открыты, какие ещё закрыты и что требуется для доступа к конкретной странице. Для этого в документации Restrict Content есть несколько отдельных инструментов: shortcode для вывода требований записи, shortcode для списка закрытых записей, shortcode для списка уже открытых записей и виджет GamiPress: Post Restrictions.

Самый полезный сценарий - общая страница требований для всех записей с жёстким ограничением Access. Вместо того чтобы создавать отдельную страницу отказа для каждого урока, можно подготовить одну страницу, вставить на неё [gamipress_post_restrictions] без параметра id и указывать её как redirect page у закрытых записей. Когда пользователь попадёт туда с конкретного закрытого материала, блок динамически покажет требования и, если настроено расходование баллов, кнопку доступа именно для той записи, откуда пришёл пользователь.

Такой подход особенно удобен для курсов, клубных библиотек и баз знаний. Пользователь не оказывается на безличной странице "доступ запрещён". Он видит, что именно нужно сделать: получить достижение, накопить баланс, подняться до ранга или потратить определённый тип баллов. Если текст на общей странице написан хорошо, она становится не тупиком, а промежуточным экраном прогресса.

Как спроектировать страницу требований

Создайте обычную страницу WordPress с понятным названием, например "Как открыть материал" или "Требования доступа". В начало добавьте короткое объяснение: почему часть материалов закрыта, где пользователь видит свои баллы и что делать, если прогресс не обновился. Затем вставьте [gamipress_post_restrictions] без id. Не добавляйте на эту страницу длинную таблицу всех правил вручную, потому что правила будут меняться. Пусть динамический блок выводит требования конкретной записи, а обычный текст страницы объясняет общую механику.

После этого откройте несколько закрытых записей и укажите новую страницу как страницу перенаправления. Тестируйте не только один материал. Проверьте запись, которая открывается за достижение, запись, которая открывается по рангу, и запись, где доступ можно получить расходованием баллов. Если все они ведут на одну страницу, но показывают разные требования, схема работает так, как задумано.

Практическая проверка: пользователь без доступа должен попасть на общую страницу, увидеть требования именно той записи, с которой пришёл, и после разблокировки вернуться к открытому материалу, если такой сценарий настроен.

Списки закрытых и открытых записей

Списки закрытых и открытых записей полезны в личном кабинете или на странице прогресса. Один блок показывает пользователю, какие материалы ему ещё предстоит открыть, другой - что уже доступно. Это не обязательная часть первого запуска, но она сильно улучшает навигацию на сайтах с большим количеством закрытых уроков.

Не размещайте такие списки на каждой странице без необходимости. Если у пользователя много записей, виджет в каждом сайдбаре может стать шумным и тяжёлым. Лучше сделать отдельную страницу "Мой прогресс" или блок в кабинете участника. Там пользователь ожидает увидеть персональные данные, а кеширование такой страницы можно настроить осторожнее.

Ручное открытие доступа по ролям и пользователям

Ручной доступ нужен для людей, которые должны видеть материал независимо от игрового прогресса: редакторы, наставники, служба поддержки, автор курса, тестировщик. В shortcode доступны параметры granted_roles и granted_users. Первый принимает роли, второй - ID пользователей. Это полезно, но требует дисциплины.

Если у вас есть команда наставников, лучше создать отдельную роль или указать конкретные ID, чем открывать доступ всем подписчикам. Перед запуском составьте список служебных ролей и решите, кто действительно должен обходить игровые требования. Затем проверьте страницу под аккаунтом обычного подписчика, чтобы случайно не открыть закрытый материал слишком широкой группе.

Ручной доступ также помогает при поддержке. Если пользователь пишет, что выполнил условие, но не видит материал, не спешите навсегда открывать ему всё вручную. Сначала используйте ручной доступ как временную меру, а затем диагностируйте настоящую причину: не выдалось достижение, неверный тип баллов, ошибка ранга, кеш или неправильный аккаунт. Иначе через месяц вы получите набор исключений, который никто не сможет объяснить.

Хорошая структура доступа всегда читается как схема: обычные пользователи открывают материалы через игровые требования, служебные пользователи имеют узко заданный обход, а спорные случаи фиксируются и проверяются через тестовый аккаунт, а не через хаотичную выдачу прав.

Практический сценарий: закрытый продвинутый урок за достижение или баллы

Разберём предметный пример. Допустим, на сайте есть бесплатный вводный курс. После прохождения первого теста пользователь получает достижение "Базовый старт". Продвинутый урок должен открываться автоматически после этого достижения. При этом пользователь может открыть урок раньше, если потратит 80 кредитов. Гость должен видеть объяснение и предложение войти в аккаунт.

Цель

Нужно получить страницу урока, где вступление доступно всем, основная часть скрыта, а пользователь видит понятный путь: пройти вводный тест и получить достижение или потратить баллы. После открытия он должен попасть к полной версии урока и не терять доступ без причины.

Подготовка

Сначала создайте тип баллов, например credits. Затем настройте начисление кредитов за нужные действия. После этого создайте достижение, которое будет выдаваться за прохождение вводного теста или другого подтверждённого шага. Важно проверить выдачу достижения до настройки закрытого урока: если тест не выдаёт достижение, Restrict Content будет выглядеть сломанным, хотя проблема находится раньше в цепочке.

Создайте два аккаунта: student_locked без достижения и баллов, student_ready с достижением или достаточным балансом. Не тестируйте только под администратором. Администратор может видеть технические уведомления, иметь обходные права и попадать в условия, которые обычный пользователь не повторит.

Шаги настройки

  1. Откройте запись с продвинутым уроком в редакторе WordPress.
  2. В начале страницы оставьте открытое вступление: что изучит пользователь и зачем ему этот урок.
  3. В метабоксе GamiPress - Restrict Content включите Restrict.
  4. В требованиях добавьте достижение, которое должно открыть урок после прохождения вводного этапа.
  5. Включите вариант, при котором доступ можно получить за расходование баллов, если такая альтернатива нужна вашему сценарию.
  6. В разделе ограничений выберите Content и настройте вывод до тега <!-- more --> или отрывок.
  7. Запишите отдельные сообщения для гостя и пользователя без доступа.
  8. Сохраните страницу и очистите кеш только для этой записи, если на сайте используется кеширование.

Проверка

Откройте страницу как гость. Вы должны увидеть вступление и сообщение для гостей. Затем войдите под пользователем без достижения. Он должен видеть сообщение с понятным требованием. После выдачи достижения или списания баллов страница должна показывать полный урок. Если используется кнопка разблокировки за баллы, проверьте, что после действия пользователь возвращается к открытому материалу.

Мини-итог: удачная настройка не заканчивается на сохранении метабокса. Она заканчивается только после проверки трёх состояний: гость, зарегистрированный пользователь без доступа, пользователь с доступом.

Пример использования GamiPress Restrict Content для закрытого урока
Практический сценарий: действие пользователя создаёт достижение или баланс, правило открывает урок, тестовый аккаунт подтверждает результат.

Проверка результата: как не обмануть себя админским доступом

Проверка закрытого контента должна быть такой же аккуратной, как проверка формы заказа или авторизации. Нельзя смотреть страницу только в админском браузере и считать, что всё работает. Администратор видит другие уведомления, может попадать в ручные разрешения и часто обходит пользовательские ограничения за счёт роли.

Матрица тестирования

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

Минимальная матрица проверки ограничения
Состояние Что должно быть видно Что проверить дополнительно
Гость Вступление и гостевое сообщение Нет ли прямой видимости закрытой части в исходном тексте страницы
Пользователь без доступа Сообщение с требованием Показывается ли правильный тип баллов, достижение или ранг
Пользователь с доступом Полный материал Сохраняется ли доступ после обновления страницы и повторного входа
Редактор или наставник Только то, что разрешено ролью или вручную Не открыт ли доступ слишком широкой роли
Администратор Техническая проверка и сообщения об ошибках Не используется ли админ как единственный тестовый сценарий

Проверка журналов и пользовательских заработков

GamiPress хранит логи и пользовательские заработки в собственных таблицах. Для обычного администратора это не повод лезть в базу данных, но это объясняет, почему состояние пользователя может зависеть от записей в журналах. Если доступ был открыт Restrict Content и затем кажется "залипшим", проверьте, не сохранён ли факт разблокировки в логах. Документация прямо указывает, что для Restrict Content доступ к порции может храниться в логах, и удаление соответствующей записи приведёт к потере доступа.

На рабочем сайте не удаляйте журналы ради эксперимента без резервной копии. Лучше создайте отдельный тестовый материал и тестового пользователя, где можно безопасно проверить поведение: получить доступ, отозвать достижение, изменить баланс, посмотреть, что сохранится, а что пересчитается динамически.

Сообщения, UX и безопасная стилизация закрытого блока

Текст сообщения влияет на результат не меньше, чем само правило. Плохое сообщение звучит как отказ: "Content restricted". Хорошее сообщение объясняет путь: "Откройте урок после получения значка Базовый старт или потратьте 80 кредитов". Пользователь должен понимать, что делать дальше, где получить баллы и почему доступ сейчас закрыт.

Что писать в сообщении

  • Назовите требование понятным языком, а не только внутренним slug.
  • Разделите сообщение для гостя и авторизованного пользователя без доступа.
  • Не обещайте мгновенное открытие, если начисления зависят от модерации или cron-задачи.
  • Если доступ открывается расходованием баллов, укажите тип баллов и ожидаемое действие после кнопки.
  • Добавьте ссылку на страницу прогресса или вводное задание, если такая страница есть.

Если интерфейс плагина выводит стандартные блоки, лучше сначала настроить тексты через параметры плагина, а не писать код. Код нужен только для небольшого визуального улучшения, которое не меняет логику доступа.

Безопасный CSS для собственного контейнера

Если вы используете шорткод внутри собственного блока, можно обернуть сообщение или вводный фрагмент в контейнер с вашим классом и стилизовать его через тему или отдельный CSS-плагин. Такой подход не требует правки ядра WordPress, темы или GamiPress.

<div class="lesson-access-note">
  Откройте этот урок после получения значка "Базовый старт" или за 80 кредитов.
</div>
.lesson-access-note {
  border: 1px solid #f0b35a;
  border-left: 4px solid #f0a23a;
  background: #fff8ec;
  padding: 16px 18px;
  margin: 20px 0;
  border-radius: 6px;
  font-weight: 600;
}

Проверка простая: откройте страницу как гость и как пользователь без доступа, убедитесь, что сообщение читается на мобильном экране и не сливается с остальным контентом. Откат тоже простой: удалите CSS и контейнер, логика Restrict Content не изменится.

Производительность, безопасность и совместимость с темой

GamiPress сам по себе может активно работать с журналами, заработками пользователя, требованиями и шорткодами. Чем больше на странице условных блоков, списков достижений, виджетов и персонализированных проверок, тем важнее контролировать кеширование и количество запросов. Официальная документация по производительности GamiPress описывает пользовательские таблицы для логов и заработков и отдельно предупреждает, что любые изменения базы лучше делать только с пониманием и через хостинг или специалиста.

Для обычного администратора практические меры проще:

  • Не ставьте десятки условных шорткодов на одну страницу без необходимости.
  • Не выводите одновременно большие списки всех закрытых и всех открытых записей в каждом сайдбаре.
  • Исключайте персонализированные страницы из полного кеша, если кеш-плагин не умеет корректно разделять гостей и авторизованных пользователей.
  • Проверяйте закрытые страницы после обновления темы, конструктора страниц и кеш-плагина.
  • Не храните действительно конфиденциальные файлы только за заменённой ссылкой в контенте.

Совместимость с темой обычно сводится к тому, как тема выводит содержимое записи, отрывок, изображения, ссылки и блоки. Если тема сильно переписывает шаблоны, сокращает контент собственными фильтрами или выводит изображения вне стандартного цикла, часть ограничений может выглядеть иначе. Поэтому после включения режима Content, Links или Images проверяйте именно тот шаблон, где будет жить материал: запись, страница, товар, урок, карточка архива или кастомный тип записи.

Проверка результата и диагностика GamiPress Restrict Content на сайте WordPress
Контрольный тест показывает, где искать ошибку: в требованиях GamiPress, роли пользователя, кеше, шорткоде или выводе темы.

Частые проблемы и диагностика

Ошибки Restrict Content чаще всего возникают не из-за одного сломанного переключателя, а из-за цепочки: неверный тип баллов, невыданное достижение, кеш, админский тест, отсутствующий закрывающий шорткод или слишком широкое ручное разрешение. Ниже - практическая диагностика по симптомам.

Закрытый материал виден всем

Симптом: гость или пользователь без прогресса видит полный текст. Возможные причины: ограничение не включено, выбран не тот тип ограничения, страница берётся из кеша, шорткод не оборачивает нужный фрагмент, тема выводит контент нестандартным способом.

Сначала проверьте метабокс: включена ли опция Restrict и сохранена ли запись. Затем откройте страницу в приватном окне без входа. Если используется шорткод, убедитесь, что есть закрывающий [/gamipress_restrict_content] и что закрытый текст действительно находится между открывающим и закрывающим шорткодом. После этого очистите кеш конкретной страницы или временно отключите кеш на тесте.

Пользователь выполнил условие, но доступ не открывается

Симптом: пользователь получил баллы, значок или ранг, но всё ещё видит сообщение ограничения. Возможные причины: правило проверяет другой тип баллов, достижение не то, ранг имеет неправильный приоритет, событие начисления ещё не сработало, пользователь тестируется в другом аккаунте.

Проверьте карточку пользователя и его заработки в GamiPress. Сравните фактический тип баллов с тем, который указан в требовании. Если правило построено на ранге, проверьте порядок рангов и требование перехода. Если доступ должен открываться после достижения, убедитесь, что именно это достижение выдано пользователю, а не достижение с похожим названием.

Кнопка разблокировки за баллы не появляется

Симптом: ожидалась кнопка расходования баллов, но пользователь видит только сообщение. В документации кнопка появляется при настройке разблокировки через расходование баллов или при варианте "выполнить требования либо потратить баллы". Значит, нужно проверить поле Unlock access by, включение расходования баллов, сумму и тип баллов.

Также убедитесь, что пользователь вошёл в аккаунт. Для гостя кнопка расходования баллов не имеет смысла, потому что у гостя нет пользовательского кошелька. Гостю лучше показывать отдельное сообщение с предложением войти или зарегистрироваться.

Шорткод показывает ошибку только администратору

Симптом: администратор видит техническое уведомление о шорткоде, а обычный пользователь нет. Это ожидаемое поведение базовой диагностики GamiPress: уведомления о неверных атрибутах видны администраторам с правами управления GamiPress. Используйте это как подсказку, а не как публичную ошибку.

Проверьте обязательные параметры, закрывающий шорткод, ID достижений, slug типа баллов и синтаксис кавычек. Если шорткод вставлен через конструктор страниц, временно перенесите его в стандартный блок редактора, чтобы исключить влияние конструктора.

После отзыва достижения доступ ведёт себя не так, как ожидалось

Симптом: доступ сохраняется после отзыва достижения или, наоборот, скрывается снова. Это зависит от выбранного механизма. Restrict Content и Show/Hide Content If имеют разную логику. Restrict Content может сохранить доступ после разблокировки, а Show/Hide проверяет текущее состояние и меняет вывод при потере условия.

Если вам нужно временное условие, используйте Show/Hide. Если нужен наградной доступ, который остаётся после открытия, используйте Restrict Content. Не исправляйте это удалением логов на рабочем сайте без резервной копии.

Изображения или ссылки закрываются не везде

Симптом: часть ссылок или изображений заменяется, а часть остаётся видимой. Возможные причины: нестандартный блок, вывод через шаблон темы, сторонняя галерея, lazy loading или прямой URL файла. Проверьте обычное изображение в стандартном редакторе, затем сравните с проблемным блоком.

Если речь о конфиденциальных файлах, не полагайтесь только на замену ссылок. Перенесите такие файлы в защищённое хранилище или используйте решение, которое ограничивает доступ к файлам на уровне сервера.

FAQ по настройке GamiPress Restrict Content

Можно ли закрыть только один абзац внутри открытой статьи?

Да. Для этого используйте [gamipress_restrict_content] и обязательно закройте его [/gamipress_restrict_content]. Для всей записи удобнее метабокс GamiPress - Restrict Content, а для короткого фрагмента - шорткод или соответствующий блок.

Что выбрать: баллы, достижение или ранг?

Баллы подходят для накопительного прогресса, достижение - для завершённого действия, ранг - для долгой траектории пользователя. Если доступ должен быть разовой наградой за конкретный шаг, чаще выбирают достижение. Если пользователь должен доказать общий опыт, выбирают баланс или ранг.

Почему администратор видит не то же самое, что обычный пользователь?

Администратор может видеть технические уведомления о шорткодах и иметь права, которых нет у обычного пользователя. Проверяйте закрытый контент минимум под гостем и тестовым аккаунтом без доступа. Админский просмотр нужен для диагностики, но не для финальной проверки пользовательского сценария.

Можно ли открыть один и тот же закрытый фрагмент на разных страницах?

Да, если использовать одинаковый id у фрагментов [gamipress_restrict_content]. Документация описывает, что одинаковый идентификатор позволяет связать порции контента: после разблокировки доступа к одной порции пользователь получает доступ к другим порциям с тем же ID.

Подходит ли плагин для защиты приватных файлов?

Он подходит для ограничения вывода контента, ссылок и изображений в записи, но это не равно полной серверной защите файлов. Если файл нельзя отдавать по прямому URL, используйте решение, которое защищает файл на уровне сервера или хранилища.

Что делать, если пользователь потерял баллы после открытия?

Сначала проверьте, какой механизм выбран. Для некоторых условий текущий баланс имеет значение, и при падении ниже порога доступ может измениться. Для Restrict Content после разблокировки часть доступа может храниться как факт открытия. Если вам нужен строго текущий контроль, рассмотрите Show/Hide Content If.

Можно ли вручную открыть доступ редактору или наставнику?

Да, в шорткодах и настройках есть ручное открытие по ролям или конкретным пользователям. Делайте это узко: лучше указать конкретных наставников или служебную роль, чем случайно открыть доступ всем зарегистрированным пользователям.

Нужен ли отдельный YouTube-урок именно по этому дополнению?

Если вы нашли точный ролик по GamiPress Restrict Content, он может помочь увидеть интерфейс в движении. При подготовке этого материала точный полезный ролик по самому дополнению не был найден, поэтому руководство опирается на официальную документацию, демо-страницы, WordPress.org и практическую диагностику.

Когда GamiPress Restrict Content будет удачным выбором

Используйте GamiPress Restrict Content, если закрытый материал является частью игровой логики: пользователь копит баллы, получает достижения, двигается по рангам и открывает новые страницы как результат активности. В таком сценарии плагин помогает превратить доступ в понятную награду, а не в обычный запрет.

Перед запуском на рабочем сайте проверьте цепочку полностью: тип баллов или достижение, правило в метабоксе, текст сообщения, поведение гостя, поведение пользователя без доступа, поведение пользователя с доступом, кеш и вывод темы. Если всё сходится на тестовой странице, можно переносить схему на реальные уроки, статьи, бонусные материалы и блоки в сайдбаре.

Когда будете готовы проверить продукт на своём сайте, переходите к блоку загрузить GamiPress Restrict Content и тестируйте сначала на копии или безопасной тестовой странице. Так вы поймёте, подходит ли логика ограничений вашему сценарию, не рискуя открыть или скрыть важный материал для реальных пользователей.

Автор: Редакция JoomFox.org

Вы не зарегистрированы, чтобы оставлять комментарии.