تعليق/إلغاء تعليق المستخدم بناءً على حالة عضوية WP

أبحث عن إرشادات حول كيفية:

  • تعليق مستخدم Discourse عند انتهاء اشتراك WordPress أو إلغائه، و
  • إلغاء تعليق مستخدم Discourse عند تجديد الاشتراك المنتهي سابقًا.

WordPress هو مزود SSO. كان موقعي يستخدم كود @simon dcpmp، لكنني سأنتقل من PMPro إلى WooCommerce + WC Subscriptions + WC Memberships.

الأجزاء في dcpmp التي تضيف/تزيل المستخدم من مجموعة غير مطلوبة في هذه الحالة.

مرجع WC Subscriptions:
Subscriptions Action Reference Documentation - WooCommerce
Introduction to Subscriptions Developer Documentation Documentation - WooCommerce
https://prospress.github.io/subscriptions-rest-api-docs/

هل تفحّصت الرابط التالي https://meta.discourse.org/t/wordpress-membership-integration-private-forum-with-discourse/91438؟ أنا متأكد تمامًا من أنه يشرح لك الخطوات بالتفصيل.

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

أوه، فهمت. لا أرى أن الإضافة تحتوي على وظيفة لإيقاف المستخدم مؤقتًا (ولكن قد لا أعرف أين أبحث). أسوأ ما يمكنك فعله هو إضافة استدعاء واجهة برمجة التطبيقات إلى الخطاف الذي يُستدعى عند فشل اشتراك المستخدم، مما يؤدي إلى إيقافه مؤقتًا. يمكنك العثور عليه باستخدام Reverse engineer the Discourse API

تعليق وإلغاء تعليق المستخدمين سيكون الجزء السهل. الحيلة تكمن في تحديد إجراءات WooCommerce التي يجب ربطها.

يبدو أن إجراء woocommerce_subscription_status_updated يجب أن يعمل. يمرر هذا الخطاف ثلاث معلمات: $subscription، $new_status، $old_status. معلمات الحالة عبارة عن سلاسل نصية، لذا يجب أن تكون قيمتها واضحة بحد ذاتها. المعلمة $subscription هي كائن من نوع WC_Subscription. أفترض أنه يحتوي على تفاصيل تتيح لك العثور على معرف المستخدم المرتبط بالاشتراك. ومع ذلك، سأحتاج إلى إلقاء نظرة عليه للتأكد.

ربما هذه:
Subscriptions Action Reference Documentation - WooCommerce


الإجراء: 'woocommerce_subscription_status_active'

المعاملات: $subscription كائن من نوع WC_Subscription يمثل الاشتراك الذي تغيرت حالته للتو.

الوصف: يُفعّل هذا الإجراء بعد تغيير حالة الاشتراك المحدد بـ $subscription إلى “نشط”. قد تكون حالة الاشتراك انتقلت من “قيد الانتظار” إلى “نشط”، أو من “معلّق” إلى “نشط”، أو من أي حالة مخصصة أخرى إلى “نشط”.


الإجراء: 'woocommerce_subscription_status_cancelled'

المعاملات: $subscription كائن من نوع WC_Subscription يمثل الاشتراك الذي تغيرت حالته للتو.

الوصف: يُفعّل هذا الإجراء بعد تغيير حالة الاشتراك المحدد بـ $subscription.

قد تكون حالة الاشتراك انتقلت من “قيد الانتظار” إلى “ملغى”، أو من “معلّق” إلى “ملغى”، أو من “قيد الانتظار للإلغاء” إلى “ملغى”، أو من أي حالة مخصصة أخرى إلى “ملغى”.


الإجراء: 'woocommerce_subscription_status_expired'

المعاملات: $subscription كائن من نوع WC_Subscription يمثل الاشتراك الذي تغيرت حالته للتو.

الوصف: يُفعّل عندما يصل الاشتراك إلى نهاية مدته، وذلك إذا تم تحديد مدة عند شراء منتج الاشتراك، أو إذا تم تحديد تاريخ انتهاء للاشتراك بطريقة أخرى.

سأحاول تشغيل بعض الاختبارات لأرى كيف تبدو.