ما مشكلة طلب cURL الخاص بي؟

هناك دالة مساعدة في ملف Utilities لهذا الغرض:

DiscourseUtilities::sync_sso_record( $sso_params );

بالأمس نشرت مثالاً لكيفية استخدامه: I cannot add user to the discouse forum from a wordpress website when user added in a membership - #10 by simon. الجزء الصعب هو إنشاء المصفوفة لحجة sso_params. يجب أن تحتوي تلك المصفوفة على حقل external_id. يتم تعيينه إلى معرف WordPress الخاص بالمستخدم:

	$sso_params = array(
		'external_id' => $user_id,
	);

يمكنك تضمين أي حقول من هذه القائمة في الحمولة: discourse/lib/discourse_connect_base.rb at 8f52fd1051e20fdff41321c5cff99fda05af86c1 · discourse/discourse · GitHub. لاحظ مصفوفة BOOLS التي تظهر أسفل قائمة ACCESSORS التي ربطتها. تشير إلى أي من الخيارات الممكنة هي booleans (true/false). عند إجراء طلبات من WordPress، يجب تعيين أي حقول منطقية باستخدام السلاسل النصية 'true' أو 'false'، وليس باستخدام قيم PHP true أو false.

لتحديث الصورة الرمزية، قم بتعيين حقل avatar_url في مصفوفة $sso_params وقم أيضًا بتعيين حقل avatar_force_update إلى 'true'.

هناك حقل bio يمكن استخدامه لتعيين السيرة الذاتية.

يقوم المكون الإضافي WP Discourse بالفعل بتعيين حقلي bio و avatar_url. كما أن لديه إعداد “Force Avatar Update” في إعدادات SSO الخاصة به. قد تكون المشكلة هي أن هذه الإعدادات يتم تحديثها فقط عندما يقوم المستخدم بتسجيل الدخول إلى Discourse عبر موقع WordPress. تقوم الدالة sync_sso_record بتحديث الحقول على الفور، دون الحاجة إلى قيام المستخدم بتسجيل الدخول إلى Discourse.

أيضًا، إذا وجدت أن السير الذاتية للمستخدمين لا يتم تعيينها كما هو الحال في Discourse، فقد يكون ذلك بسبب عدم تعيينها في موقع WordPress الخاص بك حيث يتوقع المكون الإضافي تعيينها: wp-discourse/lib/plugin-utilities.php at 99325e15190f3a705284dbf582f1c4b2c0b21492 · discourse/wp-discourse · GitHub. إذا كان لدى Woocommerce حقل مختلف للسير الذاتية، فيمكنك الوصول إلى هذا الحقل واستخدامه في استدعاء لـ sync_sso_record.

3 إعجابات