إضافة مستخدمين جدد تلقائيًا (من تكامل WP) إلى مجموعة

أعتذر إذا كان هذا السؤال قد طُرح من قبل، لكنني أبحث عن طريقة لإضافة المستخدمين الذين تم تسجيلهم عبر تكامل ووردبريس (SSO) إلى مجموعة مستخدمين معينة تلقائيًا.

لم أتمكن من العثور على أي توثيق يوضح كيفية تحقيق ذلك، لذا فإن أي توجيه سيكون موضع تقدير :slight_smile:

اعتنِ بنفسك وسأتحدث معك قريبًا،

أليكس

أفترض أنك تستخدم إضافة WP Discourse لتسجيل الدخول الموحد (SSO). تحتوي هذه الإضافة على دالتين يمكن استخدامهما لإدارة عضوية مجموعات Discourse. راجع Manage group membership in Discourse with WP Discourse SSO للحصول على تفاصيل حول كيفية استخدام هذه الدوال. سأقوم قريبًا بتحديث هذا الموضوع لإضافة مثال عام أكثر. أخبرني إذا كان هناك أي شيء غير واضح في الموضوع.

مرحبًا سيمون – نعم، هذا صحيح، أنا أستخدم إضافة WP Discourse. شكرًا لك على ربط هذا الموضوع، سأتابع التحديث، ولكن إذا كان ذلك مفيدًا، فإن الحالة المحددة تتعلق باستخدام WooCommerce Memberships و Subscriptions. مع ذلك، فإنني أعتزم حصر تسجيل المستخدمين على الأعضاء المدفوعين فقط على أي حال، طالما أن المثال عام ويمكنه إضافة كل عضو جديد إلى مجموعة أسميتها الجميع (فقط للسياق، الهدف هنا هو جعل التواصل ووسم الأعضاء في الإعلانات أمرًا سهلاً بشكل عام).

اعتنِ بنفسك وسنتحدث قريبًا!

نعم، هذا هو المثال المفقود في الموضوع الذي ربطتُ به. يمكنك إضافة المستخدمين إلى مجموعة كجزء من عملية تسجيل الدخول عبر SSO باستخدام معلمة SSO المسماة add_groups. بشكل افتراضي، لا يرسل مكون WP Discourse هذه المعلمة مع حمولة SSO، لكن المكون يحتوي على فلتر يمكن استخدامه لإضافة هذه المعلمة إلى حمولة SSO.

الكود التالي، عند إضافته إلى ملف functions.php الخاص بسمتك، أو إلى مكون إضافي، يجب أن يعمل معك. يمكنك إضافة المستخدمين إلى مجموعات متعددة بهذه الطريقة. تقبل معلمة add_groups قائمة مفصولة بفواصل بأسماء المجموعات (بدون مسافات قبل أو بعد الفواصل):

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
    $params['add_groups'] = 'your_group_name'; 

    return $params;
}

إذا كنت ترغب فقط في إضافة مستخدمين محددين إلى المجموعة، يمكنك استدعاء الدالة بهذه الطريقة:

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
    if (/*أضف شرطًا هنا للتحقق مما إذا كان يجب إضافة المستخدم إلى المجموعة */) {        
        $params['add_groups'] = 'your_group_name'; 
    }

    return $params;
}

يمكنك أيضًا إزالة المستخدمين من المجموعات باستخدام معلمة SSO المسماة remove_groups.

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
    $params['remove_groups'] = 'your_group_name'; 

    return $params;
}

أو

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
    if (/*أضف شرطًا هنا للتحقق مما إذا كان يجب إزالة المستخدم من المجموعة */) {        
        $params['remove_groups'] = 'your_group_name'; 
    }

    return $params;
}

العيب الرئيسي لهذا النهج مقارنة باستخدام دالة add_user_to_discourse_group التي ربطتُ بها هو أنه يتطلب من المستخدمين الحاليين تسجيل الخروج ثم تسجيل الدخول مرة أخرى إلى Discourse قبل تحديث عضوياتهم في المجموعات.

رائع، شكرًا لك يا سيمون! هل يمكنني، بدافع الفضول، الحصول على مثال لـ WooCommerce Memberships ضمن ذلك؟

سيكون ذلك مفيدًا جدًا إذا كان بإمكانه إزالة الأشخاص من المجموعة تلقائيًا عندما لا تكون هناك اشتراك نشط في WooCommerce، وإضافتهم إلى المجموعة فقط عندما يكون هناك اشتراك نشط، وبالتالي لن تكون هناك حاجة لمراجعة يدوية وسيكون كل شيء مؤتمتًا بالكامل (عند إلغاء الخطط وإعادة تفعيلها وما إلى ذلك). لأن الصلاحيات في Discourse يمكن تقييدها للسماح للأشخاص بعرض المنشورات أو نشرها فقط عندما يكون لديهم اشتراك نشط (ويكونون في المجموعة التي يضيفهم إليها هذا النظام)…

أي إرشادات يمكنني نقلها إلى مطور لإضافة هذا ستكون مفيدة للغاية.

اعتنِ بنفسك،

أليكس

يجب أن يكون من الممكن إزالة المستخدمين تلقائيًا من مجموعة Discourse عندما تنتهي عضويتهم في WooCommerce. للقيام بذلك، يمكنك استخدام دالة remove_user_from_discourse_group التي قمت بالربط إليها.

أنا لست على دراية كافية بإضافة WooCommerce Memberships & Subscriptions لأعرف ما هي أذونات الإجراءات (action hooks) التي تُستدعى عند إنشاء العضوية أو إلغائها. ربما يعرف بعض الأعضاء الآخرين في مجتمع Meta كيفية القيام بذلك. يمكنك أيضًا إنشاء موضوع في فئة Marketplace الخاصة بنا للعثور على مطور للمساعدة في هذا الأمر.

حسناً، رائع، شكرًا لك يا سيمون. سأبحث في الأمر وأرى ما إذا كان بإمكاني توظيف مطور لديه خبرة في ديسكورش (وسأمرر هذه المعلومة إليه). وبمناسبة الحديث عن هذا – بدافع الفضول، هل لديك قائمة بخبراء موثوقين يمكنك التوصية بهم لهذا النوع من العمل؟

لا أملك قائمة بأعضاء هذا المنتدى الذين يقومون بدمج WordPress مع Discourse. سأكون مهتمًا بمعرفة أي المطورين في مجتمع Meta مهتمون بالعمل على دمج WordPress مع Discourse.

لم أتلق أي تقارير سلبية حول أعضاء المجتمع فيما يتعلق بدمج WordPress. إذا قمت بتوظيف مطور لديه تاريخ في المجتمع، فستكون في أمان. أنا دائمًا سعيد للإجابة على الأسئلة المتعلقة ببناء التكاملات فوق إضافة WP Discourse. يمكن للمطورين التواصل معي بحرية إذا واجهوا أي مشكلة.

رائع، أعتقد أنني سأكون على اتصال في وقت ما! قد ينتهي بي الأمر بتجميع كل هذه التغييرات في إضافة/امتداد صغير لإضافة WP Discourse، دعنا نرى. :slight_smile: