نحن ندير عضوية من خلال نظام Wordpress/Woocommerce الخاص بنا. لقد كنا نستخدم Discourse على نطاق فرعي مع تسجيل الدخول الموحد (SSO) لبضع سنوات وكان يعمل بشكل رائع. لديّ رمز في ملف الوظائف الخاص بي يضيف/يزيل الوصول إلى المجموعة عندما ينضم الشخص/يلغي على التوالي.
لقد أضفنا ميزة في عضويتنا حيث يمكن للأشخاص الانضمام إلى مجموعة صغيرة مكونة من 6-8 أشخاص لمكالمات Zoom الأسبوعية.
لإدارة ذلك، قمنا بإنشاء نوع منشور Wordpress يسمى “Cohorts” يحتوي على معلومات المكالمة الأسبوعية ثم قمنا بتعيين تلك “Cohorts” لمستخدم باستخدام حقول مستخدم مخصصة.
إليك ما أود القيام به:
إنشاء مجموعة لكل من “Cohorts”.
إنشاء فئة فرعية لكل من “Cohorts” لا يمكن للمجموعة من #1 الوصول إليها.
وضع كل عضو في مجموعته respective التي ستمنحه الوصول إلى الفئة الفرعية الخاصة بهم، وعليهم، لـ “Cohort” الخاص بهم.
أعرف كيفية القيام بـ #3، ولكن هل هناك طريقة لإضافة المجموعات والفئات الفرعية برمجيًا (مع إعدادات الأمان)؟
لا يمكنني العثور على هذه الوظيفة في أدوات WP-Discourse. أيضًا، بالنظر إلى واجهة برمجة التطبيقات (API)، يمكنني رؤية مكان إضافة الفئات، ولكن ليس وظائف الأمان.
نعم، هذا ممكن. يمكنك إجراء أي طلب API إلى Discourse من WordPress باستخدام طريقة الأداة المساعدة discourse_request، أي:
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$args = array(
"body" => "",
"type" => "post"
);
$response = DiscourseUtilities::discourse_request( $path, $args );
سيؤدي هذا إلى تنسيق الطلب بشكل صحيح واستخدام مفتاح API والمستخدم الذي قدمته في إعدادات WP Discourse. ستحتاج إلى مفتاح عام للإجراءات التي تشير إليها (إذا كنت تستخدم نفس المفتاح أيضًا لوظائف WP Discourse العادية).
لاحظ أن “إعدادات الأمان” تتم معالجتها عبر المعلمة permissions. تحتاج فقط إلى تزويدها بكائن يحتوي على أسماء المجموعات كمفاتيح ومستويات الأذونات كأعداد صحيحة كقيم، على سبيل المثال:
عذرًا تيم، لقد كنت بعيدًا الأيام القليلة الماضية. يبدو أن طريقة discourse_request تحتاج إلى تعديل لدعم ذلك. سأقوم بإنشاء طلب سحب (PR) لذلك الأسبوع المقبل، وسيستغرق دمجه أسبوعًا آخر على الأرجح.
إذا كنت تريده في وقت أقرب من ذلك، يمكنك استخدام طرق WP الأساسية كما يلي:
$api_credentials = DiscourseUtilities::get_api_credentials();
if ( is_wp_error( $api_credentials ) ) {
return $api_credentials;
}
$headers = array(
'Api-Key' => sanitize_key( $api_credentials['api_key'] ),
'Api-Username' => sanitize_text_field( $api_credentials['api_username'] ),
'Accept' => 'application/json',
);
$body = array( /* specific to the endpoint you're using */ );
$url = /* The absolute url for the endpoint you're using */;
$opts = array(
'headers' => $headers,
'body' => json_encode( $body ),
'method' => 'PUT'
);
$result = wp_remote_request( $url, $opts );
مرحباً @timgrahl هل يمكنك مشاركة وظيفة تعمل مع Wordpress مع Woocommerce لإضافة/إزالة المستخدمين إلى المجموعات؟
أنا أستخدم Woocommerce مع العضويات وأحاول جعل هذا يعمل… إذا كان لدى مستخدم Wordpress عضوية Woocommerce نشطة، فسيتم إضافة المستخدم إلى مجموعة X… عند إلغاء العضوية أو انتهاء صلاحيتها، تتم إزالة المستخدم من مجموعة X