Плагин Discourse WP блокирует установку PayPal в плагине Easy Digital Downloads для WordPress

Мы обнаружили, что плагин Discourse WP вызывает проблему при установке соединения API/Webhook для новой версии PayPal в плагине Easy Digital Downloads WP (EDD).

Другими словами, когда плагин 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, поэтому эта задача хорошо вписывается в мои текущие планы, однако процесс не является простым, и решение может занять ещё несколько недель.

Способ использования вебхуков двумя плагинами в чём-то конфликтует. Помните, что причина конфликта между этими двумя плагинами может быть одинаково связана с любым из них. Действительно, учитывая, что операция, которая не выполняется, происходит в 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();

Это решит проблему и также обеспечит сохранение их функциональности.

Отлично. Спасибо за содействие. Я подготовлю исправление до конца недели, хотя оно может быть слито только на следующей неделе.

Конечно, Энгус, и спасибо за ваше внимание к этому вопросу! Пожалуйста, держите меня в курсе.

Этот PR решает основную проблему. Он будет слит в течение следующей недели или около того.

Отлично, Энгус! Просто уточняю: вы упоминали, что это будет слито примерно через неделю. Есть какие-то новости?

У меня нет возможности сливать PR, но Симон займется этим, как только сможет. После слияния ваша проблема будет решена.

Спасибо, Энгус.

@simon, есть какие-то идеи, когда этот PR будет принят?

Извините за задержку. Я смогу слить это позже сегодня. Я отвечу здесь, когда это будет сделано.

@JMJ PR уже принят, а версия WP Discourse 2.3.4 выложена в wordpress.org. Я подтвердил, что EDD работает как ожидалось в продакшене на WP Discourse 2.3.4.