Hi Eva, I went over your code and there’s no errors that I can spot - and I totally get your frustration. If it hadn’t been for Simon Cossar I don’t know how I’d have resolved it myself.
So, taking it backwards: if the PHP is correct, then something else must be disconnected. (browniepoints for me, yay.)
But…
I don’t know enough about any of that to be able to give suggestions or help.
If you’ve got your forum parked with the boys from Discourse Hosting, you could ask Richard (his name tag won’t pop, but this is his profile: Profile - RGJ - Discourse Meta )
Or perhaps @simon might be able to provide you with the missing steps.
Keeping my fingers crossed for you.
edit:
p.s. these are all the related plug-ins i use (+ that PHP one)
(Memberpress Drip is email marketing, so not related to this)
groups are any and all: closed and opened (i don’t give access to hidden groups, come to think of it)
these are some of the group names as displayed in ‘Groups’ - and as you can see, the “NoSpacesNames” are the ones that coincide with the PHP settings
If by parameters you mean the following, then no:
nor in the actual group settings (where you create it, with name, owner, etc.), it’s all straight forward and not connected to accessing through SSO - so setting or not setting this as a person’s primary group is not relavant.
There is one webhook here on Discourse that I put in as instructed by the WP-Discourse plugin:
email verification technically goes via memberpress: they (my wp-instance) send the log-in details to the user. by clicking the log-in link the users verify their address.
i know for a fact that it’s not through Discourse, because for a while it ALSO went through discourse (glitch somewhere) and Richard sorted that for me.
لم ألقِ نظرة على الأمر منذ فترة، لكن ما تحتاجه هو تواصل بين أكواد Discourse الخاصة بك وأكواد نظام الدفع (في حالتي: MemberPress).
لذا، إذا توقف الشخص عن الدفع، يقوم MemberPress بتغيير الكود الخاص به، وهذا الكود يتوافق مع مستوى مجموعة مختلف.
إذا لم يكن هناك رابط مع الدفع، فلن يتم تعديل مستوى المجموعة.
أوه، انتظر.
بإعادة قراءة سؤالك: لست متأكدًا من كيفية عمل ذلك مع مستويات الثقة…
لكن… إذا فشلت كل المحاولات، يمكنك بسهولة إنشاء مجموعة (GROUP) مُعدّة لمستوى ثقة 2 وأخرى مُعدّة لمستوى ثقة 1، ثم تطلب من إضافة العضوية أن تُعيّن هذه المجموعات لأعضائك.
أتمنى أن يكون ذلك مفيدًا. إذا لم يكن كذلك، فسأضطر إلى العودة إلى الموضوع. النظام يعمل منذ المحادثة السابقة ولم أعد ألقِ نظرة عليه منذ ذلك الحين.
ظهر هذا النقاش في منشور آخر على ميتا اليوم، لذا قمت بمراجعة الكود للتأكد مما إذا كان يمكن تقليل مستوى ثقة المستخدم بإضافته إلى مجموعة تُحدد مستوى ثقة أقل من مستوى المجموعة الحالية للمستخدم. من خلال النظر في الكود، أستنتج أن هذا غير ممكن:
def grant
if @user.trust_level < @trust_level
@user.change_trust_level!(@trust_level)
@user.save!
end
end
إذا كان مستوى ثقة المستخدم أقل من مستوى الثقة الذي تمنحه المجموعة، فإن إضافة المستخدم إلى المجموعة ستُحدّث مستوى ثقته. وإلا، فلن يكون هناك أي تغيير في مستوى ثقة المستخدم.
أنا قليل الخبرة قليلاً (كما أنه متأخر من الوقت)، لكن مستوى الثقة لن يكون ذا صلة حقًا. أنا لا أستخدم مستويات الثقة على الإطلاق. مجموعة TL 2 لديها حق الوصول إلى “هذا” بينما مجموعة TL1 لا تملكه.
مستوى الثقة الفعلي غير مستخدم. يمكن لأي عضو أن يكون مستوى ثقة 1 ويظل يحصل على الوصول (عبر الدفع) إلى مجموعة TL 4 - بشرط ألا أقوم بتعيين الأذونات لمستويات الثقة، بل للمجموعات فقط.
إذا تم تحديث مستخدم عبر عملية تسجيل الدخول الموحد (SSO) العادية، فلن يتم تطبيق التحديث إلا بعد تسجيل الخروج ثم تسجيل الدخول مرة أخرى. مثال الكود أعلاه هو أسهل طريقة لمعالجة المشكلة، لكنه ربما ليس أفضل طريقة لإدارة عضوية المجموعات.
يحتوي مكون WP Discourse على دالتين مساعدتين يتم تفعيلهما عندما يعمل WordPress كموقع مزوّد لتسجيل الدخول الموحد (SSO) لـ Discourse. تتيح لك هذه الدوال تحديث عضوية المجموعات دون الحاجة إلى تسجيل خروج المستخدم من Discourse. توجد هذه الدوال في الموضوع الذي رتبه ريتشارد: Manage group membership in Discourse with WP Discourse SSO.
يُقدّم الموضوع الذي رتبه ريتشارد بعض التفاصيل حول الطريقتين المختلفتين. سأقوم بإضافة هذه التفاصيل إلى موضوع howto الأسبوع المقبل. في الوقت الحالي، من الجيد قراءة المنشور بعناية.
بالتأكيد، الموضوع موجود هنا: Manage group membership in Discourse with WP Discourse SSO. يصف كيفية استخدام دوال add_user_to_discourse_group و remove_user_from_discourse_group في WP Discourse. بافتراض أن موقع ووردبريس الخاص بك مُعد ليكون موقع مزوّد SSO لـ Discourse، فهذه هي الدوال التي يجب استخدامها لإدارة عضوية المجموعات في Discourse.
المثال المستخدم في هذا الموضوع يعتمد على إضافة PaidMembershipsPro، لكن نهجًا مشابهًا يجب أن يعمل مع أي إضافة عضوية ووردبريس جيدة الصنع.
سأضيف بعض التفاصيل إلى الموضوع حول كيفية إدارة عضوية المجموعة باستخدام معلمات SSO add_groups و remove_groups. في معظم الحالات، لن يكون إدارة عضوية المجموعة عن طريق إضافة هذه المعلمات إلى حمولة SSO هو النهج الأفضل، لأنه يتطلب من المستخدمين تسجيل الخروج ثم الدخول مرة أخرى إلى Discourse قبل تحديث عضويتهم في المجموعة.
آمل أنه في المستقبل القريب سيكون هناك حل جاهز للربط بين Discourse وإضافات عضوية ووردبريس المحددة. حاليًا، يمكن القيام بذلك فقط بإضافة كمية صغيرة من الكود المخصص إلى موقع ووردبريس الخاص بك. إذا لم يكن هذا شيئًا تفعله عادةً، فقد تحتاج إلى توظيف مطور للمساعدة في ذلك.