I have WP discourse working for SSO and Restrict Content Pro for subscription, signup, but I am wondering how to set up levels during signup … That carry over to discourse?
Are you committed to using Restricted Content Pro? There are quite a few different WordPress membership plugins. My plan is to make a general wp-discourse-groups plugin that will work for most of them, but at the moment I’m making a plugin specifically for the WishList Member plugin. When it’s finished, I think it will do everything that you are looking for.
I’ve written code for some WordPress subscription manager that used API calls to manage groups on WordPress. It shouldn’t be hard to set up WordPress groups that whatever group manager you uses could connect to.
مرحبًا يا رفاق، أعيد إحياء هذا المنشور القديم لأن سؤالي ينطبق على Restrict Content Pro، لذا فهو مشابه لسؤال صاحب المنشور الأصلي. بشكل أساسي، أساعد في موقع تستخدم فيه نظام العضوية Restrict Content Pro، وأحاول مزامنة مجموعات Discourse مع عضويات RCP المدفوعة - أي أن أي شخص لديه عضوية يجب أن تتم مزامنته مع مجموعة Members في منتدى Discourse.
قضيت وقتًا طويلاً في محاولة تشغيل شيء مشابه لمثال إدارة عضوية مجموعات Discourse باستخدام WP Discourse SSO الخاص بـ Simon. تعمل عملية SSO بشكل جيد، لكن العضويات لا تزال غير مُزامنة (إضافة الأعضاء إلى مجموعة عند تفعيل العضوية بنجاح، أو إزالة الأعضاء من مجموعة عند انتهاء صلاحية العضوية).
في هذا المنشور، أحاول فقط جعل إضافة أعضاء جدد إلى مجموعة Discourse تعمل. تحتوي منتديات Discourse في الموقع على مجموعة واحدة فقط وهي Members. (يجب أن تكون إزالة المجموعات سهلة بما يكفي لأن خطاف Restrict Content Pro هو نفسه، مع استبدال اللاحقة active بـ expired). يذكر Restrict Content Pro خطاف الإجراء rcp_transition_membership_status_active كإجراء يُفعّل عند تغيير حالة العضوية. يحتوي على معاملات لـ $old_status و $membership_id. عند تشغيل rcp_get_membership()، يتم إرجاع كائن RCP_Membership (يحتوي على مرجع إلى $user_id في WordPress بين أشياء أخرى).
إليك النسخة المبسطة التي توصلت إليها:
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
// إضافة مستخدم إلى مجموعة 'members' في Discourse.
function rcpdc_add_member_to_group( $membership_id ) {
$membership = rcp_get_membership( $membership_id );
$user_id = $membership->get_user_id();
DiscourseUtilities::add_user_to_discourse_group( $user_id, 'Members' );
}
// تأكد من التحقق من وجود فئة Discourse.
if ( class_exists( '\WPDiscourse\Discourse\Discourse' ) ) {
// إجراء rcp المضاف إليه {active} يُنفذ عند إضافة عضوية جديدة
add_action( 'rcp_transition_membership_status_active', 'rcpdc_add_member_to_group' );
}
إذا كنت تستطيع رؤية شيء أخطئ فيه بوضوح ويمنع هذا الإجراء من العمل بشكل صحيح، فسأقدر مساعدتك حقًا. شكرًا!
عفوًا! لقد واجهتُ خطأً في جانب Restrict Content Pro، أعتذر عن ذلك. خطاف الإجراء الذي أستخدمه يتطلب وسيطين:
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
// يضيف مستخدمًا إلى مجموعة Discourse المسماة 'members'.
function rcpdc_add_member_to_group( $old_status, $membership_id ) {
$membership = rcp_get_membership( $membership_id );
$customer = $membership->get_customer();
$user_id = $customer->get_user_id();
DiscourseUtilities::add_user_to_discourse_group( $user_id, 'Members' );
}
// تأكد من التحقق من وجود فئة Discourse. إذا لم تكن موجودة، وقمت بإيقاف تشغيل wp-discourse، فإن ذلك سيتسبب في تعطل موقعك.
if ( class_exists( '\WPDiscourse\Discourse\Discourse' ) ) {
add_action( 'rcp_transition_membership_status_active', 'rcpdc_add_member_to_group', 10, 2 );
}
مع التغيير المذكور أعلاه، يجب أن يعمل add_action الآن، لكنني ما زلتُ لا أحقق أي نجاح مع دالة add_user_to_discourse_group.
لا تزال العضويات المُفعَّلة حديثًا لا تُضاف بنجاح إلى مجموعة Members، لذا سأكون ممتنًا جدًا إذا استطاع أي شخص تقديم أي نصيحة لي. تحياتي.
إذا أمكن، حاول إنشاء ملف debug.log على خادم WordPress الخاص بك، ثم اكتب في هذا الملف من دالة rcpdc_add_member_to_group الخاصة بك. يمكنك استخدام ذلك للتأكد من استدعاء الدالة وللتحقق من تعيين القيم الصحيحة للمتغيرات التي تنشئها.
شكرًا لك، سيمون! لقد نجح الأمر بشكل رائع. تمكنت من جعل الكود يعمل. اتضح أن الكود المُحيط بالإجراء كان يمنع تشغيل دالة add_action. بمجرد أن أزلت:
if ( class_exists( '\WPDiscourse\Discourse\Discourse' ) ) {
وأدرجت فقط add_action نفسها، عملت الإضافة بشكل صحيح. لست قلقًا بشأن هذا التحقق، لأنني الشخص الوحيد الذي يدير هذا الموقع. لذا، نعم، الآن يعمل المزامنة بشكل مثالي لإضافة الأعضاء وإزالتهم من المجموعات.
شكرًا لك على المتابعة. لقد أضفت خيارًا للإضافة للتعامل مع التعليقات الموجودة في الفئات الخاصة. للأسف، لم أتمكن من إكمال ذلك هذا الأسبوع بسبب ضيق الوقت. سيتم إضافة الخيار في التحديث القادم للإضافة. سأحاول إنجاز ذلك في وقت مبكر من الأسبوع المقبل.