مرحبًا @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();
وهذا يحل المشكلة، كما يجب أن يضمن بقاء وظائفهم كما هي.