안녕하세요,
WordPress 게시물을 Discourse에 통합했습니다. 그중 한 게시물에 Wistia 영상을 추가했는데, WordPress에서는 정상적으로 작동합니다. 하지만 Discourse에서는 영상 대신 이미지만 표시되고 있습니다.
이 문제를 해결할 수 있도록 도와주실 분 계신가요?
안녕하세요,
WordPress 게시물을 Discourse에 통합했습니다. 그중 한 게시물에 Wistia 영상을 추가했는데, WordPress에서는 정상적으로 작동합니다. 하지만 Discourse에서는 영상 대신 이미지만 표시되고 있습니다.
이 문제를 해결할 수 있도록 도와주실 분 계신가요?
이 질문에 대해 문의해 주셔서 감사합니다. 문제를 조사하던 중 Discourse WordPress 플러그인이 YouTube와 Vimeo 임베드를 처리하는 방식에 문제가 있음을 발견했습니다. 해당 문제의 수정이 WordPress에서 게시된 주제의 Wistia 비디오 표시 문제도 함께 해결할 수 있을 것으로 보입니다.
WP Discourse 플러그인을 사용하여 WordPress에서 Discourse로 게시물을 게시하고 있으며, WP Discourse 게시 옵션 탭에 있는 “Use Full Post Content”(전체 게시물 내용 사용) 옵션을 활성화한 것으로 추정합니다. 또한 WordPress 블록 에디터를 사용 중이며 Classic 에디터를 사용하지 않는 것으로 가정합니다. 만약 이 정보가 정확하지 않다면 알려 주십시오.
이와 같이 WordPress 게시물을 Discourse로 게시하고 있다면, WordPress 게시물에 Wistia 비디오를 어떻게 추가하고 계신가요? “공유” 링크를 사용하시나요, 아니면 비디오의 임베드 코드를 사용하시나요? “공유” 링크를 사용하는 경우 작동할 수 있을 것으로 생각되지만, 임베드 코드를 사용하는 경우 작동하지 않을 것으로 보입니다.
(제) 참고를 위해, YouTube와 Vimeo 비디오 관련 문제는 다음 링크에서 확인할 수 있습니다:
이 코드가 플러그인에 추가되었을 당시, WordPress 비디오 블록은 비디오 제공업체를 기반으로 이름이 지정되었습니다. 예를 들어 core-embed/youtube와 같은 형식입니다. 현재 WordPress는 비디오 블록에 core/embed라는 이름을 사용하고, providerNameSlug 속성을 통해 제공업체를 지정하는 것으로 보입니다. 예를 들어:
[blockName] => core/embed
[attrs] => Array
(
[url] => https://scossar3.wistia.com/medias/qtp20hbz4i
[type] => video
[providerNameSlug] => wistia-inc
)
https://github.com/discourse/wp-discourse/blob/main/lib/discourse-publish.php#L284C17-L284C35에 대한 다음과 같은 변경 사항은 YouTube와 Vimeo 비디오 문제를 수정할 뿐만 아니라 Wistia 비디오도 Discourse로 게시할 수 있게 합니다:
( 'core-embed/youtube' === $block['blockName'] || 'core-embed/vimeo' === $block['blockName'] || 'core/embed' === $block['blockName'] )
저는 이 변경 사항을 제 로컬 개발 사이트에서만 적용했습니다. 이 수정 사항이 WP Discourse 플러그인 코드에 추가될 수 있는지 더 살펴보고 확인해 보겠습니다.
안녕하세요 @cyriac15, 이 문제가 발생하는 WordPress와 Discourse의 예시를 공유해 주실 수 있을까요?
안녕하세요 @simon .. 답변 주셔서 감사합니다…
네… 저는 WP Discourse 플러그인을 사용하여 WordPress에서 게시글을 Discourse로 게시하고 있습니다. 하지만 WP 편집기에서 단축 코드를 사용하고 있기 때문에 “Use Full Post Content” 옵션은 활성화하지 않았습니다.
현재 저는 WP 클래식 편집기를 사용하고 있습니다.
WP 편집기에 Wistia 임베드 코드를 사용하여 동영상을 추가하고 있습니다.
말씀해 주신 해결 방법을 시도해 보았지만, 아무런 변화가 없었습니다..
안녕하세요 @angus ..
WP Discourse 플러그인을 사용하여 WordPress에서 게시물을 게시하고 있습니다.
Discourse 포럼에 Wistia 임베드 코드가 표시되지 않습니다. 관련 링크를 확인해 주세요..
스크린샷에서 표시된 이미지는 임베드 코드인데, 이미지로 표시되고 있습니다.
WP 에디터에서 임베드 링크를 사용하고 있습니다..
이것은 해결하기가 좀 더 어려운 문제입니다. 현재 사용자가 “전체 게시글 보기” 버튼을 클릭하여 Discourse에서 게시글이 표시될 때, Discourse는 모든 iframe을 제거합니다. 이는 어떤 출처의 비디오든 토픽에 표시되지 않게 됩니다. 이 기능이 작동하도록 개선되면 좋겠습니다. 몇 번이나 요청이 들어왔다는 것을 알고 있습니다.
이 문제가 발생하는 이유는 Discourse의 임베드된 게시물에서 “전체 게시물 보기” 버튼이 사용자가 클릭할 때 해당 웹페이지를 "다시 크롤링"하도록 작동하기 때문입니다. 해당 버튼을 클릭할 때 보이는 HTML은 게시물이 게시될 때 WP Discourse 플러그인이 전송하는 것이 아니라, 관련 페이지에 대한 새로운 크롤링 결과입니다.
웹 크롤링은 가능한 HTML 구조의 다양성(예: HTML에서 이미지를 표시하는 여러 가지 다른 방법) 때문에 항상 예측이 어려운 측면이 있습니다. 이 때문에 이 기능은 개선 대상으로 검토되고 있습니다. 자세한 내용은 아래를 참조하세요.
따라서 현재로서는 쉬운 해결책은 없습니다. 크롤러가 사용하는 HTML 선택자를 차단하거나 허용하는 방법을 시도할 수 있지만, 원하는 방식으로 작동하게 만드는 것은 까다로운 작업입니다. 자세한 내용은 아래를 참조하세요.
이를 해결하는 더 간단한 방법은 “전체 게시물 보기” 버튼을 숨기거나, 커스텀 테마 컴포넌트를 사용하여 원본 Wordpress 게시물로 링크되도록 오버라이드하는 것입니다. 이미지와 같이 비교적 복잡한 게시물 HTML 구조를 가진 사이트인 경우, 후자의 옵션을 권장하는 경향이 있습니다.