Привет, @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();
Это решит проблему и также обеспечит сохранение их функциональности.