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 さん、お手数をおかけして申し訳ありませんが、この件のレビューをご確認いただく機会がございましたでしょうか?

問題を再現させることができました。原因の特定にはもう少し時間がかかります。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-* 属性が解除されてしまいます。これにより、wp_kses_post() 下で他のすべての data 属性が機能しなくなります。これが当社の 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

素晴らしいです。お手数をおかけしました。今週中には修正版を準備いたします。ただし、マージが来週になる可能性もあります。

もちろん、アンガス。この件への対応、ありがとうございます!引き続き情報をお知らせください。

この PR は根本的な問題に対処します。今週中か来週初め頃にマージされる予定です。

「いいね!」 2

素晴らしいですね、Angusさん!先週ほどにマージされるとおっしゃっていましたが、進捗はいかがでしょうか?

PRをマージする権限はありませんが、サイモンができる時に対応します。マージされれば、問題は解決されます。

「いいね!」 1

アンガスさん、ありがとうございます。

@simon このPRはいつマージされるかご存知ですか?

遅れて申し訳ありません。本日中にマージできる見込みです。完了したら、こちらで返信します。

@JMJ PRはマージされ、WP Discourse 2.3.4 がwordpress.orgにプッシュされました。WP Discourse 2.3.4 の本番環境でEDDが期待どおりに動作することを確認しました。