Discourse WP 插件阻止在 Easy Digital Downloads WP 插件中安装 Paypal

我们发现 Discourse WP 插件导致在 Easy Digital Downloads WP 插件(EDD)的新版 PayPal 集成中出现安装问题,影响 API/Webhook 连接。

换句话说,当 Discourse WP 插件处于激活状态时,EDD PayPal API/Webhook 无法连接;但当 Discourse 被停用后,EDD PayPal API/Webhook 可以正常连接。不过,一旦重新激活 Discourse,EDD PayPal API/Webhook 的连接又会断开。

所有插件均已更新至最新版本。

以下是 EDD 插件的相关信息供参考:
https://docs.easydigitaldownloads.com/article/2410-paypal Easy Digital Downloads – eCommerce Payments and Subscriptions made easy – WordPress plugin | WordPress.org

如有任何帮助,不胜感激,谢谢!

感谢您的报告。我将在本周晚些时候测试它们的兼容性,并告知您问题所在。

没问题,Angus,如果您有任何问题,请随时告诉我!

抱歉打扰您 @angus,只是想确认一下您是否有机会查看这个问题?

我已成功复现该问题。确定原因将需要更长时间。EDD 拥有内部日志系统,但该操作未记录任何内容。我将在下周继续处理此事。我恰好正在为 WP Discourse 自身的 webhook 管理编写日志,因此这项工作与此相契合,但这并非易事,因此解决该问题可能还需要几周时间。

这两个插件使用 webhook 的方式在某些方面存在冲突。请注意,这两个插件之间的冲突原因可能同样来自任一插件。事实上,考虑到是 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-* 属性。这意味着所有其他 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();

这将解决问题,同时也应确保他们的功能保持不变。

1 个赞

太棒了。感谢您促成此事。我将在本周末前准备好修复方案,不过合并可能要到下周才能完成。

没问题,Angus,感谢您对此问题的关注!请随时向我通报进展。

此 PR 解决了根本问题。它将在未来一周左右合并。

2 个赞

太棒了,Angus!只是想跟进一下,正如你提到的,大约一周内会合并,有什么更新吗?

我没有合并 PR 的能力,但 Simon 腾出手来时会处理。合并后您的问题就会解决。

1 个赞

谢谢 Angus。

@simon 知道这个 PR 什么时候会合并吗?

抱歉延迟了。我今天晚些时候应该可以将其合并。完成合并后,我会在此处回复。

@JMJ PR现已合并,WP Discourse 2.3.4 已推送到wordpress.org。我已确认EDD在WP Discourse 2.3.4 的生产环境中按预期工作。