Разрешить доступ только при наличии подписки в Memberpress

У моего клиента установлена WordPress с плагином Memberpress, через который пользователи входят в систему для доступа к Discourse.

Существует ли способ разрешить доступ к Discourse только пользователям с активным планом Memberpress?

Спасибо,
Пер

Посмотрите мой первый ответ в этой теме, чтобы узнать подробности о том, как ограничить вход в Discourse: How to prevent some WP users from being able to login to Discourse. Это предполагает, что сайт WordPress работает как провайдер SSO для Discourse и что вы используете плагин WP Discourse.

Спасибо, Саймон, это здорово! :slight_smile:

Это позволяет мне проверять доступ перед перенаправлением пользователя на Discourse.
Случайно не знаете, есть ли хороший способ проверить, есть ли у пользователя активная подписка?
Это будет условие, на основе которого я буду решать, перенаправлять их на Discourse или нет.

Спасибо!!

Я уверен, что такой способ существует, но не знаю, как получить доступ к уровню подписки Memberpress пользователя в WordPress. Возможно, в постах нашей категории Support > WordPress есть примеры того, как это сделать.

ок, спасибо :slight_smile:
хороших выходных!

Если кто-то ещё пытается решить ту же задачу, я нашёл решение здесь:

Саймон: последний вопрос: как долго пользователь остаётся авторизованным в Discourse до выхода? Или пользователь остаётся авторизованным навсегда, пока не нажмёт кнопку «Выйти»?

Это контролируется настройкой сайта Discourse «maximum session age» (максимальный возраст сессии). По умолчанию эта настройка установлена на 1440 часов. Если она не задана очень маленьким значением, она не является надежным способом разлогинивания пользователей. Это связано с тем, что она определяет время, в течение которого пользователь остается в системе с момента его последнего посещения. Установка значения «maximum session age» на очень малое количество часов также может вызвать неудобства для пользователей вашего сайта.

Я думаю, что лучшим подходом будет разлогинивание пользователей из Discourse через API по истечении срока их членства. Пример кода, как это сделать, можно найти здесь: wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub. Возможно, вам потребуется помощь разработчика, чтобы сделать вызов API для разлогинивания пользователей из Discourse при истечении срока их членства.

Можно ли просто вызвать функцию logout_from_discourse() или мне нужно скопировать весь этот код?

Это не так просто, как просто вызвать функцию logout_from_discourse(), но возможно использовать хук действия WordPress для вызова этой функции при выполнении определённого действия на вашем сайте WordPress. Например, когда уровень членства пользователя отзывается. Возможно, кто-то из сообщества Discourse сможет помочь вам с синтаксисом, необходимым для реализации этого.