들어가며

참고한 글

개인적으로 플러그인 사용을 선호하지 않아서, 플러그인 없이 개별 포스트에 카운터를 달 수 있게 작업했습니다.

위 글에 나온 소스를 적용하면, F5 누르면 누를 때마다 조회수가 올라가는 불상사가 벌어지기에, 그 부분만 수정했습니다.

functions.php 수정

function getPostViews($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);

if ($count == '') {
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
return '읽음 0';
}

return '읽음 '.$count;
}

function setPostViews($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);

if ($count == '') {
$count = 0;
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
}
else {
if (!isset($_COOKIE['read'.$postID])) {
setcookie('read'.$postID, 'read', time() + 86400);
$count++;
update_post_meta($postID, $count_key, $count);
}
}
}

setPostViews() 함수에서 쿠키를 체크하는 과정을 거쳐 카운트를 올리도록 했습니다.

getPostViews()에서 읽음 이란 단어가 적힌 두 부분을 적절히 수정하시면 조회수가 표시되는 부분이 변경됩니다.

header.php 수정

<?php if (is_single()) {setPostViews(get_the_ID());} ?>

<head> 태그에 해당 내용을 집어넣으시면 됩니다.

간혹 head 태그 내부에 해당 코드를 넣은 위치에 따라 쿠키를 생성 못 하기도 하던데, 계속 안 되면 title 태그 바로 아래에 붙여 넣으시면 쿠키가 생성될 겁니다.

주소 표시 줄에 url 왼쪽에 있는 자물쇠 (보안 연결을 사용하지 않는다면 i 모양 아이콘)을 클릭하시면 위와 같은 창이 뜹니다.

Cookies 클릭하시고 도메인 > cookies 경로로 들어왔을 때 readID란 쿠키가 생성되어 있으면 제대로 작동 중인 겁니다.

굳이 복잡하게 찾고 싶지 않으시면 f5 몇 번 해보시고 카운트가 계속 올라가지 않으면 제대로 작동 중인 겁니다.

조회수 표시

echo getPostViews(get_the_ID());

single.php를 수정하셔도 되고, footer.php나 header.php에 is_single() 태그를 사용하셔 추가하셔도 됩니다.

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

(?)