Raptive 광고 관련 문제

해결이 안 되는 골치 아픈 문제가 하나 있습니다. 제가 확인한 바로는, WordPress 사이트(pistolsfiringblog.com)에서 Discourse 사이트(forum.pistolsfiringblog.com)로 포스트 ID가 항상 동기화되지 않고 있습니다. 이로 인해 WordPress 포스트에서 댓글이 로드되지 않고, 댓글 작성 옵션도 함께 사라지는 문제가 발생합니다. (우리는 WordPress 댓글을 허용하지 않고, Discourse 댓글만 허용하고 있습니다.)

좋은 예시는 다음과 같은 포스트입니다:
WP: Coleman Scott Joins Oklahoma State Wrestling Staff as Associate Head Coach
Discourse: Coleman Scott Joins Oklahoma State Wrestling Staff as Associate Head Coach - #4 by MiggityMac - PFB Articles - The Chamber

해당 포스트에서는 댓글이 허용되어 있음에도 불구하고, post_id가 undefined로 넘어오고 있습니다. Discourse WordPress 플러그인을 조금 살펴봤는데, id가 undefined인 경우 단순히 반환만 합니다. 이는 정상적인 동작입니다. 눈에 띄는 특이사항은 없었습니다. 하지만 사이트의 다른 포스트 중에는 댓글이 정상적으로 표시되는 것이 있고, 그렇지 않은 것도 있습니다. 설정은 댓글이 표시되지 않는 포스트와 정확히 동일합니다(꼼꼼하게 비교해 봤습니다).

웹훅 호출에 id를 강제 입력해 보았습니다: https://pistolsfiringblog.com/wp-json/wp-discourse/v1/discourse-comments?post_id=259952
그랬더니 다음과 같은 응답이 반환됩니다:
"\t\t<div class=\"respond comment-respond\">\n\t\t\t<div class=\"comment-reply-title discourse-no-connection-notice\">\n\t\t\t\t<p>Comments are not currently available for this post.<\/p>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t"

…이는 완전히 사실이 아닙니다. 댓글은 사용 가능하며 허용되어 있습니다. 제 이해를 넘어서는 이유로 인해, 특정 포스트들이 Discourse 포스트와 연결/연관될 post_id를 받지 못하여 댓글이 WP로 흐르지 못하는 것 같습니다.

문제를 더 복잡하게 만드는 것은, 편집자가 할 법한 테스트 포스트를 작성하고 WP 포스트에서 Discourse를 거쳐 다시 WP로 돌아오는 전 과정을 감시해 보았다는 점입니다. Discourse에서 추가된 댓글까지 포함하여, 제 테스트 포스트는 모두 정상적으로 WP로 동기화되었습니다.

주요 문제(단 하나의 포스트에만 국한되지 않음)에 대한 스크린샷을 첨부했습니다. 도움이 정말로 절실합니다. 이 시점에서 저는 완전히 막막한 상태입니다. ¯\_(ツ)_/¯


Hi @MiggityMac, 사이트에서 확인해 보니 Google 광고와 관련된 것으로 보이는 콘솔 오류가 많이 발생하고 있습니다. 또한 WordPress 페이지에서 브라우저가 크래시 나기도 했습니다. 내장 댓글 기능의 포럼 쪽에서도 댓글 버튼이 정상 작동하고 댓글로 이동할 수 있는 경우에도 콘텐츠 정책 및 권한 오류가 발생하고 있습니다. 현재로서는 확실하지 않지만, 일부 광고 관련 오류가 플러그인과 충돌하는 문제를 일으키고 있을 수 있습니다. 콘텐츠 보안 정책(CSP) 설정을 검토해 보시기 바랍니다. 이는 임베딩 문제를 일으킬 수 있기 때문입니다. 저희 포럼에서도 WordPress 플러그인을 사용하는데, 임베딩 문제나 WordPress 페이지에 버튼이 표시되지 않는 문제가 발생한 적은 경우 대부분 콘텐츠 보안 정책 설정 때문이었습니다. 댓글 버튼이 정상 작동하는 페이지에서도 여전히 양쪽(WordPress 및 Discourse)에서 오류가 확인됩니다. 계속해서 확인하고 더 깊이 파헤쳐 보겠습니다…

아래는 정상 작동한 경우 중 하나에서 Discourse에서 확인한 내용입니다.

@MiggityMac WordPress 로그를 확인해 보셨나요?

@MiggityMac 저는 여기서부터 시작하겠습니다. 릴리의 CSP 제안도 좋은 방법입니다. 또한, 가능하다면 해당 예시 게시물의 WP 데이터베이스에 저장된 wp 메타 필드를 공유해 주실 수 있을까요?

@Lilly, 정말 감사합니다. 어제에 대해 깊이 파고들지는 못했지만, 오늘/내일에는 꼭 그렇게 할 겁니다. 정말 많은 도움이 됩니다. 곧 로그를 확인해서 그곳에서 무슨 일이 일어나고 있는지 살펴보겠습니다.

워드프레스 플러그인이 언젠가부터 임베딩을 시작하게 된 건가요? 마지막으로 확인했을 때는 댓글의 사본을 동기화하여 로컬에서 표시하고 있었습니다.

최근 WP Discourse 로그는 다음과 같습니다:
pistols-firing-wp-discourse-logs-2022-06-01-2023-08-23.zip (159.7 KB)

@Stephen 죄송합니다. 말씀이 맞고, 제가 용어를 혼동하고 있었습니다. 플러그인이 어떻게 작동하는지는 알고 있습니다.

이 문제에 대해 궁금해서 직접 살펴보기로 했습니다.

로그에 429(요청 횟수 초과) 오류가 많이 발생하고 있습니다. 이 오류는 WordPress가 Discourse에서 포스트의 댓글을 가져오려 할 때 발생합니다. 링크하신 포스트와 관련된 오류는 찾지 못했지만, 오류 로그가 범람하여 일부 오류가 건너뛰어지는 상황일 수도 있습니다.

오류가 발견된 Discourse 토픽과 WordPress 포스트는 다음과 같습니다:

이 문제를 디버깅하기 위한 가장 쉬운 방법은 WordPress에서 해당 포스트의 편집 페이지로 가서 “custom fields”(사용자 정의 필드) 패널을 활성화하는 것입니다:

그러면 다음과 같은 필드들이 표시되어야 합니다:

wpdc_sync_post_comments 필드가 값이 1로 설정되어 있을 것으로 추정됩니다. 만약 이 값이 어떤 이유로든 1에 고정되어 있다면, 모든 ‘요청 횟수 초과’ 오류를 설명할 수 있습니다.

또한, WordPress 플러그인의 ‘Commenting’(댓글) 설정 탭에서 “Enable Discourse Comments”(Discourse 댓글 활성화) 설정의 값은 무엇입니까?

과거에 WordPress 사이트에 Discourse 댓글이 정상적으로 표시된 적이 있습니까? 만약 있었다면, 댓글이 표시되지 않게 된 시점에 WordPress 사이트에서 변경된 부분이 있었을 수 있는지 기억나는 것이 있나요?

좋은 정보를 공유해 주셔서 감사합니다.
Raptive(구 AdThrive) 업데이트 문제로 인해 Discourse Comments가 갑자기 작동하지 않게 되었습니다.
Discourse의 댓글 설정은 스크린샷에 보이는 것과 동일합니다.

게시물에 커스텀 필드를 활성화했는데, 다른 게시물에서는 필드가 보이지 않습니다. 하지만 참고하신 해당 게시물에서는 필드가 보입니다. wpdc_sync_post_comments 값은 0으로 설정되어 있었습니다.


오늘 아침에 문제가 있는 게시물(‘broken’ post)의 메타 데이터를 확인해 보겠습니다.

@simon - 여기는 깨진 게시물의 메타 정보입니다 (여기서 발견함: Arizona State Reportedly Names True Freshman Jaden Rashada as Starting Quarterback)

그리고 게시물 데이터(부분 캡처):


그리고 DC 로그의 몇 가지 오류입니다 (하지만 이것은 제가 이전에 업데이트했을 때의 것이므로 참고만 해주세요):

[2023-08-24 19:50:18] publish.ERROR: create_post.post_error {"wp_title":"Arizona State Reportedly Names True Freshman Jaden Rashada as Starting Quarterback","wp_author_id":"20980","wp_post_id":260073,"response_message":"Embed url has already been taken","http_code":422}```

이 정보가 도움이 될까요?

나중에 이 모든 것을 더 자세히 살펴보겠습니다. 오늘 중에 가능할 것 같습니다.

[2023-08-24 19:50:18] publish.ERROR: create_post.post_error {"wp_title":"Arizona State Reportedly Names True Freshman Jaden Rashada as Starting Quarterback","wp_author_id":"20980","wp_post_id":260073,"response_message":"Embed url has already been taken","http_code":422}```

Embed url has already been taken 오류는 WP Discourse 플러그인이 처리해야 합니다. 이 오류는 Discourse 사이트에 이미 해당 WordPress 게시물의 URL과 연결된 기존 토픽이 있을 때 발생합니다. 이 오류를 가장 쉽게 재현하는 방법은 게시물을 Discourse에 게시한 후 WordPress에서 “Discourse에서 연결 해제” 버튼을 클릭하고, 다시 게시물을 Discourse에 게시하려고 하는 것입니다. 결과는 다음과 같아야 합니다:

UI가 시도하고 있는 것은, 게시물을 Discourse에 게시하는 대신, 해당 Discourse 토픽의 URL을 “토픽 URL” 입력란에 입력해야 한다는 것입니다. 다만 표시되는 오류 메시지는 개선될 수 있습니다.

이것이 WordPress 사이트의 Discourse 댓글 관련 모든 문제를 설명하는지는 확실하지 않습니다. 예를 들어, 커스텀 필드 세부 정보를 제공했던 토픽과 게시물은 다음과 같습니다:

해당 커스텀 필드에는 댓글이 성공적으로 표시될 경우 예상되는 데이터가 포함되어 있지만, WordPress 페이지에서 Discourse 댓글 템플릿조차 표시되지 않습니다. 테마의 어떤 부분이 로딩을 방해하고 있는 것 같습니다.

여기서 “모든 토픽에 댓글 표시” 옵션이 선택되어 있는지, “댓글로 링크 표시” 옵션이 선택되어 있지 않은지 확인해 주실 수 있습니까? 누락된 댓글 템플릿과 관련이 있을 수 있는지 알아보기 위해 묻습니다.

또한 “Ajax로 댓글 로드” 옵션이 활성화되어 있는 것으로 보입니다. 게시물 소스 코드에서 해당 스크립트에 대한 호출을 확인할 수 있습니다. 이 문제가 해결될 때까지 해당 옵션을 비활성화해 보시고, 다시 활성화했을 때 문제가 발생하는지 확인해 보세요.

마이클, Raptive와 관련하여 겪었던 문제가 무엇이었는지 설명해 주시겠어요? 그리고 현재 해당 기능이 사이트에 활성화되어 있나요?

@angus - 더 자세히 설명하고 싶지만, 몇 주 전 어느 날 갑자기 광고가 작동이 멈췄어요. 아마도 플러그인의 자동 업데이트 때문일 겁니다. 로그가 없어서 내부 상황을 더 깊이 파악하기가 어렵네요. Raptive과 협력해서 다시 작동하게 만들었고, 지금은 잘 돌아가고 있는 것 같습니다. Raptive에서 알아낸 가장 큰 원인은 포럼과 블로그에서 CORS를 기본적으로 꺼야 한다는 것이었습니다. 그 이후로 다시 정상 작동하기 시작했습니다.

블로그(WP)의 CDN 제공업체로 Cloudflare를 사용하고 있습니다. OpenLiteSpeed 서버에서도 실행 중이지만 OLS CDN은 사용하지 않고(Cloudflare 사용) 있습니다. 업데이트/게시물/플러그인 업데이트 시 캐시가 무효화됩니다.

Raptive 광고에 사용 중인 코드는 다음과 같습니다:

    if ( function_exists('is_subscribed_to_memberful_plan') && is_subscribed_to_memberful_plan( array('98342-fallcamp2023', '21436-gray-monthly', '21300-white-monthly', '34796-pfb-yearly', '34795-pfb-monthly', '69495-pfb-2021') ) ) {
        ?>
        <script>
            adthrive.cmd.push(function() {
                adthrive.disableAds();
            });
            jQuery('body').addClass('logged-in-no-ads');
        </script>
        <?php
    }
}
add_action('wp_footer', 'enqueue_custom_footer_script');

양이 많을 수 있지만, 자식 테마에서 스타일 조정을 위해 사용 중인 오래된 CSS입니다. 정리 작업을 진행 중입니다:

/*div#mvp-main-nav-top {
    display: none;
}
*/
/*.mvp-nav-bot-right-out {
    width: 100% !important;
}*/

.mvp-nav-bot-right.left.relative {
  float: none !important;
}
.mvp-nav-bot-right-in {
    margin-right: 88px;
}
#mvp-main-nav-bot-cont {
  background: #1a1a1a !important;
}
li#menu-item-207620 {
    top: -4px;
}
/*.menu-image-title-hide {
    margin-top: -19px !important;
    margin-bottom: -12px !important;
}*/
ul#menu-new-global-menu li:first-child a :not(.sub-menu) {
    margin-bottom: -16px !important;
    margin-top: 0px !important;
}
/*** To keep the Elite Media... from messing up the page top padding ****/
.adthrive-footer-message {
    margin-bottom: 0px !important;
    padding-bottom: 16px;
    background: black;
}
.adthrive-comscore.adthrive-footer-message {
  margin-top: 0px !important;
}
/*AVATAR*/
.account-link img {
    width: 35px !important;
    height: 35px !important;
    border: 2px solid #ddd !important;
    -webkit-border-radius: 50%;
    -moz-border-radius: 50%;
    -ms-border-radius: 50%;
    -o-border-radius: 50%;
    border-radius: 50%;
}
.account-link a {
  padding: 0px 0px 5px 0px !important;
  top: 6px !important;
  height: 39px !important;
}
.account-link {
  margin-left: 16px !important;
  top: -11px;
}
.account-link:hover {
    top: -6px;
}
/*li#menu-item-208021:hover {
    top: -5px;
}*/

.mvp-nav-the-chamber-link {
  content: url("https://pistolsfiringblog.com/wp-content/uploads/2020/01/Chamber-e1580357588365.png");
  cursor: pointer;
  max-width: 38px;
  max-height: 38px;
  float: right;
  margin-top: 7px;
  margin-right: 8px
}

.mvp-nav-menu ul:first-child {
    display: inline-block;
    position: relative;
    padding-left: 8px !important;
    float: left !important;
}

.mvp-nav-menu ul li a {
    font-size: large;
}
.sub-menu li {
  margin-left: 0px !important;
  padding-left: 0px !important;

}
.nav-menu-logo-link {
  pointer-events: none;
  cursor: pointer;
  padding: 0;
  margin-top: 0px !important;
  padding-right: 16px;
}

.nav-menu-logo-link a {
  padding-top: 15px !important;
}

a.menu-image-title-hide.menu-image-not-hovered.external {
    padding: 0;
    /* float: left; */
}
.menu-item a img, img.menu-image-title-after, img.menu-image-title-before, img.menu-image-title-above, img.menu-image-title-below, .menu-image-hover-wrapper .menu-image-title-above {
    border: none;
    box-shadow: none;
    vertical-align: super;
    width: 175px;
    display: inline;
}

.mvp-nav-bot-right {
  width: 50px;
  height: 50px;
  display: inline-flex;
  /*right: 79px;*/
}
.mvp-nav-search-but {
  float: left;
}
span.mvp-nav-search-but {
  cursor: pointer;
  float: left;
  font-size: 20px;
  line-height: 1;
  padding: 15px 15px;

}

.mvp-nav-menu ul li a, #mvp-nav-bot-wrap span.mvp-nav-search-but {
    color: white !important;
}

#mvp-nav-bot-wrap .mvp-fly-but-wrap span, #mvp-nav-bot-wrap .mvp-search-but-wrap span {
    background: white;
    font-size: initial;
}


.textwidget {
   margin-bottom: 5px;
   background: #ff6600;
   padding: 10px;
   font-size: 19px;
   margin-top: 25px;
}

#mvp-post-content {
    width: 100%;
    max-width: 1200px;
}

.textwidget a, a:visited {
   text-decoration: underline;
}

.mvp-flex-story-text p {
    color: #555;
    float: left;
    font-size: 20px;
    font-weight: 300;
    line-height: 1.4;
    margin-top: 10px;
    width: 100%;
}

#mvp-home-widget-wrap .mvp-flex-row .mvp-flex-story-text h2 {

    color: #333333;
    float: left;
    font-size: 1.4rem;
    font-weight: 700;
    letter-spacing: -.02em;
    line-height: 1.1;
    width: 100%;

}

.mvp-main-box {
    margin: 0 auto;
    width: 1200px;
    height: 100%;
}

.mvp-widget-ad img {
  width: 100%;
  max-width: 1200px;
}

#mvp-post-content {
    width: 100%;
    max-width: 1200px;
}

p a.external, #mvp-content-main p a, .mvp-post-add-main p a {
  color: #ff6600 !important;
  text-decoration: none !important;
  box-shadow: none !important;
}

#mvp-content-main a:visited {
  color: #ff6600 !important;
}

h1.mvp-post-title {
  font-size: 30px !important;
}

#mvp-content-main ul {
  font-family: 'PT Serif', sans-serif !important;
}

#mvp-content-main p a:hover, .mvp-post-add-main p a:hover {
  text-decoration: underline !important;
  background: none !important;
}

.mvp-feat5-mid-main-text h2 {
  color:#222222;
  float:left;
  font-size:1.4rem;
  font-weight:700;
  letter-spacing:-0.02em;
  line-height:1.2;
  width:100%;
}

.mvp-feat5-small-main-text h2 {
  color:#222222;
  float:left;
  font-size:1.3rem;
  font-weight:700;
  letter-spacing:-0.02em;
  line-height:1.2;
  width:100%;
}

.mvp-feat5-mid-sub-text h2 {
  color:#222222;
  float:left;
  font-size:1.2rem;
  font-weight:700;
  letter-spacing:-0.02em;
  line-height:1.2;
  width:100%;
}

.mvp-blog-story-text h2 {
  color:#222222;
  float:left;
  font-size:1.4rem;
  font-weight:700;
  letter-spacing:-0.02em;
  line-height:1.1;
  width:100%;
}

#mvp-home-widget-wrap .mvp-flex-col .mvp-flex-story-text h2 {
  font-size:1.4rem;
}

span.mvp-feat1-pop-head {
  font-family: 'Oswald', sans-serif;
  }

/* Copied from old Pistols Firing Site */

blockquote {
/*  border-left-color: #232323 !important;
  border-left-style: solid !important;
  border-left-width: 6px !important;*/
  font-family: inherit !important;
  font-style: italic !important;
  font-weight: 400 !important;
  margin: 0 0 0 15px !important;
  padding-left: 3px !important;
  line-height: 30px !important;
  color: #232323 !important;
  position: relative !important;
}

blockquote, q {
    quotes: "" "" !important;
}

/* Custom sizes are located in media queries */
#mvp-content-main blockquote p, .mvp-post-add-main blockquote p {
  font-style: normal !important;
  font-family: 'PT Serif', sans-serif !important;
  font-weight: 400 !important;
  letter-spacing: -.02em !important;
  line-height: 30px !important;
  margin: 30px 3% !important;
  width: 80% !important;
  word-wrap: break-word !important;
}

#mvp-content-main ul li, #mvp-content-main ol li, .mvp-post-add-main ul li, .mvp-post-add-main ol li {
    font-family: 'PT Serif', sans-serif !important;
    font-weight: 400;
    line-height: 30px;
    margin-bottom: 5px;
    margin-left: 30px !important;
}


/* Remove 'Related Posts' at bottom of Singular Articles. */
.mvp-post-tags {
  display: none !important;
}

.mvp-widget-feat1-top-story span.mvp-cd-cat {
  color: white !important;
}

#mvp-content-main p {
   max-width: 100% !important;
}

/*Table header background*/
#mvp-content-main tbody tr:first-child, .mvp-post-add-main tbody tr:first-child {
  background: #ff6600;
  text-align: left;
  color:white;
}

#mvp-content-main table, .mvp-post-add-main table {
    margin-bottom: 25px;
    color: #333333;
}

/* Ad Specific Styling */
.widget_recent_comments ul li:last-child, .widget_recent_entries ul li:last-child {
    margin-bottom: 30px;
}

/* Menu Styling */
nav.mvp-fly-nav-menu ul li.menu-item-has-children:before{
  color:white !important;
}

/* Menu Styling */
nav.mvp-fly-nav-menu ul li.menu-item-has-children:after{
  color:white !important;
}

#mvp-content-main {
  margin-bottom: 5px !important;
}

nav.mvp-fly-nav-menu ul li:first-child {
    display: none;
}

#mvp-content-main blockquote p, .mvp-post-add-main blockquote p {
    background: #ffeadc !important;
    padding: 14px;
    border-radius: 5px;
}

@media screen and (max-width: 999px) {
  

}

@media only screen and (min-width: 1000px) and (max-width: 1023px) {
    .mvp-nav-menu ul li {
    display: inline-block;
    position: relative;
    padding-left: 3px !important;
    float: left !important;
  }
  .mvp-nav-the-chamber-link {
    margin-top: 9px !important;
  }
}
/* Screen Larger than 1024px */
@media only screen and (min-width: 1000px) {
  /* hides top social bar on desktop */
  div#mvp-main-nav-top{
    display: none !important;
  }
  .mvp-nav-menu ul {
    width: auto;
  }


  /*Used to keep the custom nav sticky and pretty when scrolling up.*/
  .mvp-fixed2 {
    -webkit-transform: translate3d(0,70px,0) !important;
    -moz-transform: translate3d(0,70px,0) !important;
    -ms-transform: translate3d(0,70px,0) !important;
     -o-transform: translate3d(0,70px,0) !important;
    transform: translate3d(0,70px,0) !important;
  }
  .chamber-link-small-screen {
    display: none;
  }

  #mvp-content-main p, .mvp-post-add-main p {
    font-size: 20px !important;
  color: #333333 !important
  }

  #mvp-content-main blockquote p, .mvp-post-add-main blockquote p {
    font-size: 20px !important;
    color: #333333 !important;
  }

  #mvp-content-main ul li, #mvp-content-main ol li, .mvp-post-add-main ul li, .mvp-post-add-main ol li {
    font-size: 20px !important;
    color: #333333 !important
  }
}

/* Screen Smaller than 1024px */
@media only screen and (max-width: 999px) {
  .mvp-nav-top-right {
    width: 64px !important;
    margin-right: -13px;
  }
  .mvp-nav-top-right .mvp-nav-search-but {
    display: none;
    padding: 6px 0 7px;
  }
  .mvp-nav-the-chamber-link {
    content: url("https://pistolsfiringblog.com/wp-content/uploads/2020/01/Chamber-e1580357588365.png");
    cursor: pointer;
    max-width: 30px;
    max-height: 30px;
    float: right;
    margin-top: 0px;
  }
  #mvp-content-main p, .mvp-post-add-main p {
    font-size: 17px !important;
    color: #333333 !important
  }

  #mvp-content-main blockquote p, .mvp-post-add-main blockquote p {
    font-size: 17px !important;
    color: #333333 !important
  }

  #mvp-content-main ul li, #mvp-content-main ol li, .mvp-post-add-main ul li, .mvp-post-add-main ol li {
    font-size: 20px !important;
    line-height: 30px;
    color: #333333 !important;
  }
  .mvp-blog-story-text h2, #mvp-home-widget-wrap .mvp-flex-row .mvp-flex-story-text h2, #mvp-home-widget-wrap .mvp-flex-col .mvp-flex-story-text h2 {
    font-size: 1.15rem !important;
    line-height: 1.1em !important;
  }
  span.mvp-cd-cat, span.mvp-cd-date {
    font-size: 0.8rem !important;
  }
  
  div#comments .comment-content p {
    font-size: 17px !important;
  }

}
.mvp-feat1-feat-text span.mvp-cd-cat{
  color: #ffffff !important;
}
@media screen and (max-width: 479px) {
  .mvp-blog-story-text h2, #mvp-home-widget-wrap .mvp-flex-row .mvp-flex-story-text h2, #mvp-home-widget-wrap .mvp-flex-col .mvp-flex-story-text h2 {
    font-size: 1.15rem !important;
    line-height: 1.1em !important;
  }
  span.mvp-cd-cat, span.mvp-cd-date {
    font-size: 0.8rem !important;
  }
  div#comments .comment-content p {
    font-size: 17px !important;
  }
}

@media only screen 
and (min-device-width : 375px) 
and (max-device-width : 667px) { 
  #mvp-content-main p {
    font-size: 17px !important;
  }
  div#comments .comment-content p {
    font-size: 17px !important;
  }
}

.custom-call-to-action {
    background: #f6d8cb;
    border-radius: 5px;
    padding: 16px;
    border: 3px solid #f60;
    margin-bottom: 8px;
}

.custom-call-to-action p {
  color: #333 !important;
}

.custom-call-to-action a:hover {
  color: gray !important;
}

/* Discourse Comments Segment */
.discourse-comments-area ~ .comments-area .comments-title  {
	display: none;
}
#comments {
    clear: both;
}

#comments > ol {
    border-top: 1px solid #E0E0E0;
    padding: 15px 0px;
}

#comments .comment {
    display: block;
    padding: 10px 0px 30px;
    background-color: #FFF;
    transition: background-color 1000ms;
}

#comments .comment p {
    word-wrap: break-word;
}

#comments .fn {
    font-size:16px !important;
}

.comment-metadata {
    font-size:16px !important;
    margin-top: 5px;
}


article #comments .respond > h3 {
    margin-bottom: 5px;
}

#comments-title {
    padding-bottom: 20px;
}

h2.discourse-comments-title {
    display: none;
}

.comment-content {
    clear: left;
    padding-top: 1px;
}

.comment-content ol, .comment-content ul {
    overflow: auto;
}

.comment-content p {
    margin-bottom: 10px;
    font-size: 20px!important;
    color: #333!important;
    line-height: 1.5;
    font-family: 'PT Serif', sans-serif;
}

.comment-content > blockquote {
	font-style: normal !important;
    margin-left: 30px;
    border-left: 5px solid #eaf9ff;
    padding-left: 10px;
}

.comment-content .quote, .comment-content .onebox {
    margin-left: 30px;
    margin-top: 15px;
    margin-bottom: 10px;
    border-left: 5px solid #eaf9ff;
    padding-left: 10px;
}

.comment-meta {
    color: #808080;
}

.avatar-64 {
    margin-bottom: 10px;
}

span.says {
    display: none;
}
 */
/* begin legacy WP comments */

li.comment {
    list-style: none;
    padding: 0px 0px 25px 0;
    border-bottom: 1px solid #ddd;
    margin-bottom: 10px;
}

section.comments {
    margin-bottom: 10px;
    margin-top: 25px;
}

section.comments {
    margin-bottom: 10px;
}

section.comments ol h2 {
    margin-bottom: 20px;
    padding-bottom: 20px;
}

.archive .comments.wp h2 {
    display: none;
}

.archive .comments.wp {
    border: 0;
    width: 200px;
    float: left;
    padding-left: 20px;
}

.comment-content li {
    margin-left: 40px;
}

#comments .avatar {
    width: 64px;
    height: 64px;
    float: left;
    margin-right: 10px;
    border-radius: 50%;
}

#comments .avatar-25 {
    width: 32px;
    height: 32px;
    margin-right: 5px;
    border-radius: 50%;    
}

#comments h3#reply-title {
    display:block !important;
  text-align: center !important;
    color:#333 !important;
    font-size: 20px !important;
    line-height: 1 !important;
    margin-bottom: 10px !important;
    text-transform: uppercase !important;
    padding: 5px 10px !important;
    text-shadow:none;
}
#comments  h3#reply-title a {
    color:#ff6600 !important;
    text-decoration:underline !important;
} */
/* to hide the tiny avatars */
.comment-reply-title, .more-replies {
    display: none;
}

또한 이 사이트에는 27,000개 이상의 게시물이 있고, 거의 10년 된 사이트입니다. 데이터가 매우 많습니다. 이번 주말에는 테마를 업데이트하고, CSS를 정리하며, 우연히 충돌이 일어나지 않았는지 확인해 볼 계획입니다.

이 문제를 조사해 주셔서 정말 감사합니다. 진심으로 감사드립니다.

마이클, 내가 이해한 게 맞는지 확인하고 싶은데:

  1. Raptive와 관련하여 문제가 발생하기 시작했습니다.
  2. 그 문제를 해결하기 위해 위에 자세히 설명하신 변경 사항을 사이트에 적용했습니다.
  3. 해당 변경 사항을 적용한 후 WP Discourse 플러그인이 작동하지 않게 되었습니다.

맞나요?

@angus - 제가 Raptive 탓을 하고 있는 것처럼 들리지 않기를 바랍니다. 그들의 서비스는 훌륭했고 고객 지원도 정말 뛰어났습니다. 거의 누구에게나 추천하고 싶습니다. 하지만 제가 파악한 바로는, 모든 일이 우연히도 같은 시기에 발생한 것 같습니다. 제가 완전히 엉뚱한 방향에서 생각하고 있는 것만 아니라면요. ¯\_(ツ)_/¯

저는 Raptive에 연락을 취했고, 그들은 로그에 계속 나타나는 비추천(deprecation) 오류를 추적하는 것을 포함하여, 무슨 일이 일어나고 있는지 이해하는 데 매우 도움과 지지를 아끼지 않았습니다.

하지만 확실하게 확인하기 위해, 저는 그들의 플러그인을 다시 활성화하고 광고 코드가 정상적으로 작동하는지 확인해 보았는데, WP Discourse는 여전히 고장 난 상태였습니다. 오늘 기준으로 Raptive 플러그인을 켜거나 끄는 것이 전혀 영향을 미치지 않는 것으로 보입니다. 어떤 일이 발생했을 수 있는지 재현해 보며 다른 점을 알아볼 수 있는지 시도하고 있습니다. 내일은 사이트 코드를 완전히 심층적으로 점검하고 초기화할 계획입니다. 이것이 버그나 잘못된 설정이라면, 미래에 이 문제를 겪고 있을 다른 분들에게 도움을 줄 수 있도록 가능한 한 체계적으로 진행하겠습니다.

말씀하신 대로, Raptive 문제를 해결하기 위해 적용한 변경 사항이 이번 문제의 가장 유력한 원인으로 보입니다.

제안된 변경 사항을 적용한 후 WP Discourse 플러그인에서 겪고 있는 문제를 해당 플러그인 측과 논의해 보셨나요?

참고로 CDN, CORS 설정, 테마 등에서 변경 사항을 적용했다면, Raptive 플러그인을 끄고 다시 켜는 것만으로는 이러한 설정이 미치는 영향이 사라지지 않습니다.

Raptive 측에 과도한 책임을 돌리고 싶지는 않지만, 말씀해 주신 내용만으로는 해당 부분들에 대해 좀 더 조사가 필요해 보입니다.

어쨌든, 사이트 재구축 진행 상황을 알려 주시기 바랍니다.

@angus - 사이트 리프레시, 테마 업데이트, 플러그인 정리 등을 수행했습니다. 문제를 발견했는데, 찾기가 매우 어려웠습니다. 우리가 사용 중인 테마(고도로 수정된 Zox News 테마)의 부모 테마 업데이트가 다른 플러그인과 함께 어떻게 업데이트되었는지 알 수 없었습니다.

자식 테마가 이를 제대로 처리하지 못했습니다. Zox News 테마에는 Disqus 통합을 위한 공간이 있으며, 표준 WP 댓글 HTML 구조를 완전히 덮어씁니다. 부모 테마를 수정하여 댓글 버튼을 표시하지 않도록 해야 했고, WP 댓글 구조(더 이상 존재하지 않음)를 찾던 WP Discourse 코드 주입을 사실상 가로채는 것을 방지해야 했습니다.

사이트 백엔드는 여전히 다소 어수선하지만, 주말 동안 정리할 예정입니다.

문제를 일으킨 코드 조각은 다음과 같습니다:

    <!-- DELETE THIS from post-single.php in parent theme -->
	<!-- <div id="mvp-comments-button" class="left relative mvp-com-click">
	    <span class="mvp-comment-but-text"><?php comments_number(__( 'Click to comment', 'zox-news'), esc_html__('1 Comment', 'zox-news'), esc_html__('% Comments', 'zox-news'));?></span>
	</div>-->
    <!--mvp-comments-button-->

댓글을 끄거나 켜면서 약 5개의 다른 게시글로 테스트했습니다. 지금까지는 문제가 없습니다. 주말/이번 주 동안 상황이 좋으면 해결책으로 표시하겠습니다.

다시 한번 모두 감사합니다!!!

저도 이 문제를 해결하려고 노력하고 있습니다. Raptive를 사용하는 사이트가 두 개 있지만, 제 Discourse 사이트는 그렇지 않습니다.

어떻게 설정하셨나요? app.yml에서 DISCOURSE_ENABLE_CORS를 사용하셨나요?

사이트에 Discourse 댓글이 표시되지 않는 문제에 대해, CORS가 영향을 미쳤다고 생각하지 않습니다. 문제의 원인은 사이트에 사용 중인 테마가 Discourse 댓글 템플릿의 로딩을 방해하고 있었기 때문입니다.

어떤 문제를 해결하려고 하시나요? WP Discourse 플러그인과 관련된 문제인가요, 아니면 WordPress 사이트에서 Raptive 광고와 관련된 문제인가요?