El plugin Discourse WP bloquea la instalación de Paypal en el plugin Easy Digital Downloads WP

Hemos descubierto que el plugin Discourse para WordPress está causando un problema de instalación con la conexión de API/Webhook para una nueva versión de PayPal en el plugin Easy Digital Downloads para WordPress (EDD).

En otras palabras, cuando el plugin Discourse para WordPress está activado: la API/Webhook de PayPal de EDD no se conecta, pero cuando Discourse se desactiva: la API/Webhook de PayPal de EDD se conecta perfectamente, aunque al volver a activar Discourse, la API/Webhook de PayPal de EDD se desconecta de nuevo.

Todos los plugins están actualizados.

Aquí tienes la información del plugin EDD para referencia:
https://docs.easydigitaldownloads.com/article/2410-paypal Easy Digital Downloads – eCommerce Payments and Subscriptions made easy – WordPress plugin | WordPress.org

Agradecemos cualquier ayuda. ¡Gracias!

Gracias por el informe. Probaremos su compatibilidad más adelante esta semana y te informaré sobre dónde reside el problema.

¡Todo bien, Angus! Si tienes alguna pregunta, házmelo saber.

Lo siento por molestarle @angus, pero solo quería verificar si ha tenido la oportunidad de revisar este problema.

He logrado reproducir el problema. Determinar la causa tomará más tiempo. EDD tiene un sistema de registro interno, pero no está registrando nada para esta operación. Continuaré trabajando en esto la próxima semana. Coincidentemente, estoy en el proceso de escribir registros para la propia gestión de webhooks de WP Discourse, por lo que este trabajo se alinea con eso; sin embargo, no es sencillo, por lo que una resolución podría tardar unas semanas más.

La forma en que los dos plugins utilizan los webhooks entra en conflicto de alguna manera. Tenga en cuenta que la causa del conflicto entre estos dos plugins podría provenir igualmente de cualquiera de los dos. De hecho, considerando que es una operación en EDD la que está fallando, el lugar lógico para depurarla es en realidad dentro del propio plugin EDD, por parte de sus creadores. También debería contactar con ellos si aún no lo ha hecho.

Hola @angus, tengo algunas novedades de EDD a continuación:


He identificado el problema en el plugin WP Discourse y espero que puedas comunicárselo a los desarrolladores.

El problema está en este archivo:

lib/discourse-comment.php

Específicamente en este filtro:

add_filter( ‘wp_kses_allowed_html’, array( $this, ‘extend_allowed_html’ ), 10, 2 );

Por defecto, el array que están filtrando contiene lo siguiente:

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,
)

De particular interés es el último: ‘data-*’

El plugin WP Discourse está filtrando esto para agregar su atributo data-youtube-id, pero al hacerlo, está anulando inadvertidamente el atributo data-. Esto significa que todos los demás atributos de datos ya no funcionan bajo wp_kses_post(). Esto está causando un problema con nuestro código de PayPal.

Para ser claro: WP Discourse no te está desconectando realmente de PayPal; solo está rompiendo el código que verifica si estás conectado. Esto se debe a que utilizamos un atributo de datos en nuestro marcado, y el filtro en WP Discourse lo está eliminando.

Mi recomendación para los desarrolladores sería extender el array $allowedposttags[‘div’] en lugar de sobrescribirlo.

En lugar de esto:
$allowedposttags[‘div’] = array(
‘class’ => true,
‘id’ => true,
‘style’ => true,
‘title’ => true,
‘role’ => true,
‘data-youtube-id’ => array(),
);

Pueden hacer esto:

$allowedposttags[‘div’][‘data-youtube-id’] = array();

Eso resuelve el problema y también debería asegurar que su funcionalidad permanezca igual.

1 me gusta

Fantástico. Gracias por facilitarlo. Prepararé una corrección para finales de esta semana, aunque es posible que no se fusione hasta la próxima semana.

¡Por supuesto, Angus, y gracias por tu atención a este asunto! Por favor, mantente al tanto.

Esta PR aborda el problema subyacente. Se fusionará en algún momento de la próxima semana.

2 Me gusta

¡Gran trabajo, Angus! Solo verificando, ya que mencionaste que se fusionaría en una semana más o menos, ¿hay alguna actualización?

No tengo la capacidad de fusionar PRs, pero Simon lo hará cuando pueda. Cuando se fusione, tu problema se resolverá.

1 me gusta

Gracias Angus.

@simon ¿Alguna idea de cuándo se fusionará este PR?

Disculpa la demora. Podré fusionarlo más tarde hoy. Responderé aquí cuando se haya hecho.

@JMJ El PR ya se fusionó y WP Discourse 2.3.4 se envió a wordpress.org. He confirmado que EDD funciona como se esperaba en producción en WP Discourse 2.3.4.