السماح بالوصول فقط عندما يكون لدى المستخدم خطة اشتراك على 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 قبل أن يتم تسجيله خارجًا؟ أم أن المستخدم يبقى مسجّل الدخول إلى الأبد حتى يضغط على زر “تسجيل الخروج”؟

يتم التحكم في ذلك من خلال إعداد الموقع maximum session age في Discourse. يكون هذا الإعداد افتراضيًا عند 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()، ولكن من الممكن استخدام خطاف إجراء (action hook) في ووردبريس لاستدعاء هذه الدالة عند تنفيذ إجراء معين في موقعك على ووردبريس. على سبيل المثال، عند إلغاء مستوى عضوية مستخدم. ربما يتمكن أحد أفراد مجتمع ديسكورش من مساعدتك في كتابة الصيغة البرمجية اللازمة لجعل ذلك يعمل.