你好 @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-* 属性。这意味着所有其他 data 属性在 wp_kses_post() 下不再起作用。这导致我们的 PayPal 代码出现问题。
需要明确的是:WP Discourse 并没有真正断开您与 PayPal 的连接;它只是破坏了检查您是否已连接的代码。这是因为我们在标记中使用了 data 属性,而 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();
这将解决问题,同时也应确保他们的功能保持不变。