블로그 게시물 하단의 토론 시작 링크가 작동하지 않음, topic_url로 연결됨

워드프레스 블로그 게시물 하단의 “토론 시작” 링크가 작동하지 않고 이제 "topic_url"로만 연결되는 것을 확인했습니다.

이 링크가 언제부터 작동하지 않게 되었는지 정확히 알지 못합니다.

최근에 워드프레스 테마를 업데이트했습니다. 업데이트 후에 블로그 게시물을 작성했는데, 이 게시물 자체는 정상적으로 작동하여 디스커스 포럼에 게시되었습니다.

아래에 로그를 확인해 주세요:

[2025-02-11 13:53:50] comment.ERROR: sync_comments.response_error {"message":"","discourse_topic_id":"89","wp_post_id":1521,"http_code":""} 

### 이 파일은 로그 다운로드에 포함되어 있습니다 ###

### 서버 ###

WordPress - 6.7.2
PHP - 8.0.30
MySQL - 10.11.11

### 활성 플러그인 ###

Avada Builder - 3.11.15
Avada Core - 5.11.15
WP-Discourse - 2.5.6

### WP Discourse 설정 (비밀 정보 제외) ###

connection-logs - 0
display-subcategories - 1
allow-tags - 1
max-tags - 8
publish-as-unlisted - 0
full-post-content - 1
custom-excerpt-length - 55
add-featured-link - 1
auto-publish - 1
force-publish - 0
force-publish-max-age - 0
publish-failure-notice - 1
auto-track - 1
allowed_post_types - post
exclude_tags - 
hide-discourse-name-field - 1
discourse-username-editable - 0
direct-db-publication-flags - 0
verbose-publication-logs - 0
enable-discourse-comments - 1
comment-type - display-comments
ajax-load - 1
load-comment-css - 1
discourse-new-tab - 1
hide-wordpress-comments - 1
show-existing-comments - 0
max-comments - 8
min-replies - 1
min-score - 0
min-trust-level - 1
bypass-trust-level-score - 50
only-show-moderator-liked - 0
custom-datetime-format - 
cache-html - 0
clear-cached-comment-html - 0
verbose-comment-logs - 0
use-discourse-webhook - 1
webhook-match-old-topics - 0
use-discourse-user-webhook - 0
webhook-match-user-email - 0
verbose-webhook-logs - 1
verbose-sso-logs - 0
enable-sso - 0
auto-create-sso-user - 0
real-name-as-discourse-name - 0
force-avatar-update - 0
redirect-without-login - 0
sso-client-enabled - 1
sso-client-login-form-change - 1
sso-client-sync-by-email - 0
sso-client-sync-logout - 0
logs-enabled - 1

제 Wordpress/Discourse 링크: https://www.alphagamer.net/

안녕하세요 @Pieces,

즉, 이 특정 Discourse 게시가 완전히 예상대로 작동했다는 말씀이신가요? 그리고 그 후의 게시에서 이런 예상치 못한 결과가 나온 건가요?

후속 게시물이 정확히 무엇을 의미하는지 잘 모르겠습니다.

어제 새 블로그 글을 게시했습니다. 이 글을 게시하는 과정은 정상적으로 작동했고, 예상대로 제 Discourse 포럼에 게시되었습니다. 오늘 아침 확인해 보니 아래 링크가 더 이상 작동하지 않는 것을 발견했습니다(우연히 알게 되었습니다). 업데이트나 기타 특별한 작업을 수행하지 않았습니다.

이전에는 정상적으로 작동했음을 확신합니다. 언제부터 작동하지 않게 되었는지는 정확히 알지 못합니다.

도움이 되기를 바랍니다.

아, 그렇군요. 설명해 주셔서 감사합니다. 게시물의 “편집” 화면으로 들어갔을 때, “Discourse” 사이드바에서 주제가 올바르게 연결되어 보입니까?

헤이 @angus 네, 링크되어 있다는 표시가 나오는데 링크도 정상적으로 작동하는 것 같습니다.

알겠습니다. 이는 귀하의 WordPress 인스턴스에 다른 문제가 있음을 시사합니다. 게시글 편집 화면에서 해당 URL을 설정하는 데이터는 댓글 템플릿의 topic_url을 채우는 데이터와 동일하기 때문입니다. 다시 말해, 데이터는 존재하지만 어떤 이유로든 댓글 템플릿에서 로드되지 않는 것입니다.

  1. PHP 로그에서 문제가 발견됩니까? 로그 위치를 잘 모르신다면 호스팅 제공업체에 문의할 수 있으신가요?
  2. 다른 게시글에서도 이 문제가 발생합니까?
  3. 브라우저 콘솔에서 오류가 표시됩니까?
  4. WP Discourse > Comments” 설정에서 댓글의 ajax 로딩을 비활성화해 보시고 상황이 달라지는지 확인해 주시겠어요?

@angus 답변해 주셔서 감사합니다.

  1. 오늘 밤 확인해 보겠습니다. 현재 PHP 로그에 접근할 수 없습니다.
  2. 이 문제는 모든 게시물에서 발생하고 있습니다.
  3. 브라우저 콘솔에는 쿠키(차단) 관련 문제만 보입니다. (이것이 원인은 아니라고 생각하지만, 관련이 있다면 조언해 주시면 감사하겠습니다.)
  4. Ajax를 꺼두니 링크가 정상적으로 작동하는 것 같습니다. 다만, WordPress 블로그 게시물에 정의된 링크 뒤에 많은 추가 문자가 붙어 있습니다. (예: www.mydomain/post/1이 www.mydomain/post/1?_ahsdkhsdkhkh*lnnjasdfa가 되는 경우)

안녕하세요 @angus. 6개월 전에 WordPress 게시물을 Discourse에서 onebox로 게시할 수 있도록 자식 테마(Child Theme)를 설치한 사실을 알게 되었습니다.

메인 테마를 다시 활성화했지만, 문제가 여전히 존재합니다(Ajax를 다시 켜면). 그래서 자식 테마로 다시 돌아가 Ajax를 꺼두었습니다.

아래는 onebox가 작동하도록 하기 위한 자식 테마의 functions.php 코드입니다.

<?php

function theme_enqueue_styles() {
    wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', [] );
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles', 20 );

function avada_lang_setup() {
	$lang = get_stylesheet_directory() . '/languages';
	load_child_theme_textdomain( 'Avada', $lang );
}
add_action( 'after_setup_theme', 'avada_lang_setup' );

//Publish the WordPress post as a onebox on Discourse
function wpdc_custom_publish_format_html( $input, $post_id ) {
	$permalink = get_the_permalink( $post_id );
	ob_start();
	echo $permalink;
	$output = ob_get_clean();

	return $output;
}
add_filter( 'discourse_publish_format_html', 'wpdc_custom_publish_format_html', 10, 2 );

네, 그렇다면 이 문제는 워드프레스의 스크립트 및/또는 Ajax와 관련이 있을 수 있습니다. 왜 Ajax 로딩을 활성화하셨나요? Ajax를 꺼둔 채로 두는 것에 대해 우려되는 점이 있으신가요?

안거스님,

플러그인을 설치할 때 활성화된 것 같습니다. 아니라면, 특별한 이유가 있어서 활성화하지 않았습니다. 워드프레스나 테마 업데이트 외에는 명확한 이유 없이 작동이 멈춘 것이 좀 이상하게 느껴집니다.

일단은 꺼둔 상태로 유지하겠습니다.

해당 설정은 기본적으로 비활성화되어 있습니다. 테마나 사이트에 JavaScript 관련 문제가 있으면 AJAX 로딩에 문제가 발생할 수 있습니다.

네, 그것이 해결책이라고 생각합니다. 특정 이유가 있는 경우에만 댓글의 AJAX 로딩을 사용할 필요가 있습니다.

안녕하세요 @angus,

오늘 뭔가 이상한 점을 발견했어요. WordPress에서 로그아웃된 상태가 되었는데, 이렇게 로그아웃되어 있으면 링크가 작동하지 않는다는 걸 알게 되었어요 (Ajax를 꺼둔 상태에서도요).

WordPress에 로그인한 뒤 내 블로그 글을 보면, 링크가 실제로는 작동하더라고요.

이런 현상이 발생하는 원인에 대해 혹시 생각이 있으신가요?

안녕하세요 @Pieces, 이 문제는 해당 플러그인이 아니라 사용자의 사이트와 관련된 것 같습니다. 특정 상황에서 WordPress에서 게시물 커스텀 필드가 로드되지 못하게 하는 요인이 있는 것 같습니다.

WordPress 쪽에서 디버깅을 진행해야 합니다. 호스팅 제공업체나 개발자가 있다면 이 문제를 그들에게 문의해 보시는 것이 좋습니다. 최근에 사이트에 변경 사항을 적용했다면, 해당 변경 사항을 되돌려 보시고 문제가 해결되는지 확인해 보세요.

안녕하세요, @angus

Wordpress를 Discourse에서 분리하는 가장 좋은 방법은 무엇일까요? 단순히 Wordpress에서 플러그인을 삭제하고(Wordpress의 플러그인 섹션에서), Discourse에서 API 키와 Webhook을 제거하는 것만으로 충분한가요?

놓치고 있는 부분이 있을까요?

감사합니다, Pieces.

Wordpress에서 플러그인을 제거하기만 하면 됩니다. 하지만 말씀하신 다른 조치들도 함께 수행할 수 있습니다.