안녕하세요 @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();
이렇게 하면 문제가 해결되며, 기존 기능이 동일하게 유지되도록 보장할 수 있습니다.