إضافة Discourse WP تمنع تثبيت Paypal في إضافة Easy Digital Downloads WP

اكتشفنا أن إضافة Discourse لـ WordPress تسبب مشكلة في التثبيت مع اتصال واجهة برمجة التطبيقات/الويب هوك لإصدار جديد من PayPal في إضافة Easy Digital Downloads لـ WordPress (EDD).

وبعبارة أخرى، عند تفعيل إضافة Discourse لـ WordPress: لن يتصل اتصال واجهة برمجة التطبيقات/الويب هوك الخاص بـ EDD وPayPal، ولكن عند إلغاء تفعيل Discourse: يتصل اتصال واجهة برمجة التطبيقات/الويب هوك الخاص بـ EDD وPayPal بشكل مثالي، رغم أن إعادة تفعيل Discourse تؤدي إلى قطع الاتصال مرة أخرى.

جميع الإضافات محدّثة.

إليك معلومات إضافة EDD للمرجع:
https://docs.easydigitaldownloads.com/article/2410-paypal Easy Digital Downloads – eCommerce Payments and Subscriptions made easy – WordPress plugin | WordPress.org

أي مساعدة ستكون مُقدَّرة، شكرًا!

شكرًا للتقرير. سأختبر التوافقية الخاصة بهم في وقت لاحق من هذا الأسبوع وأخبرك أين تكمن المشكلة.

أحسنت يا أنغوس، إذا كان لديك أي أسئلة، فلا تتردد في إخباري!

عذراً لإزعاجك @angus، لكنني فقط أتحقق مما إذا كان لديك فرصة لمراجعة هذه المشكلة حتى الآن؟

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

طريقة استخدام الإضافتين للويب هوك تتعارض بطريقة ما. تذكّر أن سبب التعارض بين هاتين الإضافتين قد يأتي بالتساوي من أيٍّ منهما. في الواقع، وبما أن العملية التي تفشل في EDD، فإن المكان المنطقي لتصحيحها هو فعليًا داخل إضافة EDD نفسها، من قبل منشئي تلك الإضافة. يجب أن تتواصل معهم أيضًا إذا لم تكن قد فعلت ذلك بالفعل.

مرحبًا @angus، لدي بعض الأخبار من EDD أدناه:


لقد حددت المشكلة في إضافة WP Discourse، وآمل أن تتمكن من إرسالها إلى المطورين.

المشكلة موجودة في هذا الملف:

lib/discourse-comment.php

تحديدًا في هذا الفلتر:

add_filter( ‘wp_kses_allowed_html’, array( $this, ‘extend_allowed_html’ ), 10, 2 );

بشكل افتراضي، يحتوي المصفوفة التي يقومون بفلترتها على ما يلي:

array (
‘align’ => true,
‘dir’ => true,
‘lang’ => true,
‘xml:lang’ => true,
‘aria-describedby’ => true,
‘aria-details’ => true,
‘aria-label’ => true,
‘aria-labelledby’ => true,
‘aria-hidden’ => true,
‘class’ => true,
‘id’ => true,
‘style’ => true,
‘title’ => true,
‘role’ => true,
‘data-*’ => true,
)

ومن الجدير بالذكر بشكل خاص العنصر الأخير: ‘data-*’

إضافة WP Discourse تقوم بفلترة هذا العنصر لإضافة سمة data-youtube-id الخاصة بهم، ولكن عند القيام بذلك، تقوم عن غير قصد بإلغاء تعيين سمة data-* العامة. وهذا يعني أن جميع سمات البيانات الأخرى لم تعد تعمل تحت wp_kses_post(). وهذا يسبب مشكلة في كود PayPal الخاص بنا.

ولكن للتوضيح: إضافة WP Discourse لا تفصلك فعليًا عن PayPal؛ بل إنها تكسر الكود الذي يتحقق مما إذا كنت متصلًا. والسبب في ذلك هو أننا نستخدم سمة بيانات في ترميزنا، والفلتر في WP Discourse يقوم بإزالتها.

توصيتي للمطورين هي تمديد مصفوفة $allowedposttags[‘div’] بدلاً من استبدالها.

بدلاً من هذا:
$allowedposttags[‘div’] = array(
‘class’ => true,
‘id’ => true,
‘style’ => true,
‘title’ => true,
‘role’ => true,
‘data-youtube-id’ => array(),
);

يمكنهم القيام بما يلي:

$allowedposttags[‘div’][‘data-youtube-id’] = array();

وهذا يحل المشكلة، كما يجب أن يضمن بقاء وظائفهم كما هي.

إعجاب واحد (1)

رائع. شكرًا لك على التيسير. سأقوم بإعداد إصلاح بحلول نهاية الأسبوع. ومع ذلك، قد لا يتم دمجه حتى الأسبوع المقبل.

بالتأكيد يا أنغوس، وشكرًا لك على اهتمامك بهذه المسألة! يرجى إبقائي على اطلاع.

يتناول هذا الطلب pull request المشكلة الأساسية. سيتم دمجه خلال الأسبوع القادم تقريبًا.

إعجابَين (2)

عظيم يا أنغوس! فقط أتأكد، حيث ذكرت أنه سيتم دمجه خلال أسبوع تقريبًا، هل هناك أي تحديثات؟

ليس لدي القدرة على دمج طلبات السحب (PRs)، لكن سيمون سيتعامل معها عندما يتسنى له ذلك. عندما يتم دمجها، سيتم حل مشكلتك.

إعجاب واحد (1)

شكرا لك أنجوس.

@simon هل لديك فكرة متى سيتم دمج طلب السحب هذا (PR) [DEV: data-* attributes are now allowed by default by angusmcleod · Pull Request #425 · discourse/wp-discourse · GitHub

عذرًا على التأخير في هذا. سأتمكن من دمجه لاحقًا اليوم. سأرد هنا عندما يتم ذلك.

@JMJ تم دمج طلب السحب (PR) الآن وتم دفع WP Discourse 2.3.4 إلى wordpress.org. لقد أكدت أن EDD يعمل كما هو متوقع في بيئة الإنتاج على WP Discourse 2.3.4.