태그 보관물: HTTPS

SSL을 적용하고 나서 페이스북 댓글/좋아요가 사라졌을 때

워드프레스 기반 사이트에 SSL을 적용하고 나서 갑자기 페이스북 댓글/좋아요가 사라지는 현상이 발생했다. 원인을 찾기 위해 구글링한 결과, 댓글/좋아요 플러그인을 설치했을 때 적용된 사이트 URL에서 프로토콜이 http에서 https로 바뀌었기 때문. 아무것도 변경하지 않았는데도 이런 문제가 발생해서 처음에는 황당했는데, 결국 워드프레스 사이트에 SSL 적용을 도와주는 플러그인 때문에 발생하는 문제였다.

사람들이 자주 사용하는 Really Simple SSL의 경우에는 functions.php 파일에 다음과 같은 훅 메서드를 추가해서 간단하게 해결할 수 있다는데

function rsssl_exclude_http_url($html) {
  //replace the https url back to http
  $html = str_replace('href="https://domain.com', 'href="http://domain.com', $html);
  return $html;
}
add_filter("rsssl_fixer_output","rsssl_exclude_http_url");

내 경우에는 호스팅 서버에 설치된 PHP 버전 문제 때문에 Really Simple SSL을 사용하지 못하고 One Click SSL을 사용하는지라 결국 플러그인 코드에 손을 대서 급하게 문제를 해결하긴 했다. 즉, 위의 코드처럼 플러그인에서 최종적으로 만들어내는 웹 페이지 문자열에서 페이스북 댓글 플러그인에 해당하는 부분을 수정해서 반환하도록 처리했다.

$html = str_replace('data-href="https://www.domain.com', 'data-href="http://www.domain.com', $html);
return $html;

그나저나 이렇게 했을 때 매번 플러그인이 업데이트될 때마다 이 부분을 다시 수정해야 하는 문제가 남아 있는데, 이 부분은 좀 더 자료를 찾아서 해결책을 찾아야 할 듯.

실험해 본 결과, One Click SSL 플러그인의 경우 functions.php 파일에 다음과 같은 코드를 추가하면 된다.

function rsssl_exclude_http_url($str) {
    $str = str_replace('data-href="https://www.domain.com/', 'data-href="http://www.domain.com/', $str);
    return $str;
}
add_filter("ocssl_replace_output", "rsssl_exclude_http_url");