WordPress에서 CDN 정적 캐시 페이지를 활성화한 후에는 글에 방문할 때 원본 서버에 요청하지 않고 CDN에 캐시된 페이지를 반환하므로, 글 조회 수 통계가 자동으로 증가하지 않으며 기타 변경 사항도 적용되지 않습니다.

이 문제를 해결하려면 Ajax를 통해 서버에 비동기 요청을 보낸 다음 글 조회 수를 증가시키거나 기타 작업을 수행할 수 있습니다.

중요 알림:

이 방법은 WP-PostViews 플러그인 또는 WP-PostViews와 동일한 필드를 사용하는 블로그에만 적용됩니다. 글 통계 필드가 다른 경우 아래 SQL 문을 직접 수정하여 적용할 수 있습니다.

해결 방법

먼저 WordPress 루트 디렉터리에 새 PHP 파일을 만들고 views.php로 이름을 지정한 다음, 아래 코드를 해당 파일에 작성합니다.

<?php require('wp-blog-header.php'); ?>
<?php
  $ajaxHead =  $_SERVER['HTTP_X_REQUESTED_WITH'];
  if (strtoupper($ajaxHead) == strtoupper("XMLHttpRequest")) {
    $post_id = $_POST['post_id'];
    echo $post_id;
    $sql = "update wp_postmeta set meta_value = meta_value + 1 where post_id = '${post_id}' AND meta_key = 'views';";
    $wpdb->query($sql);
  } else {
    header("HTTP/2 404 Not Found");
    header("Status: 404 Not Found");
    exit;
  }
?>

위 코드에서는 악의적인 요청을 방지하기 위해 Ajax 요청 헤더를 검증하여 XMLHttpRequest 요청인지 확인합니다. 그렇지 않으면 404 상태를 반환합니다.

그다음 테마의 page.php 파일에 다음 JS 코드를 삽입합니다.

<script>
  $(function() {
    $.post("/views.php", { post_id: <?php the_ID(); ?> }, function() {});
  });
</script>

이렇게 하면 WordPress에서 CDN 캐시를 활성화한 후 글 조회 수가 증가하지 않는 문제를 완벽하게 해결할 수 있습니다.