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 캐시를 활성화한 후 글 조회 수가 증가하지 않는 문제를 완벽하게 해결할 수 있습니다.