모두의매뉴얼
🚀

[워드프레스] 젯팩을 이용해서 특정 포스트의 조회수를 표시하는 방법

📈4


그동안 테마나 플러그인 만들면서 특정 포스트의 조회수를 가져와 표시하는 함수를 몇 번이고 돌려막기 할 정도로 잘 쓰다가, 어느 날 갑자기 그 함수를 찾지 못 하게 되었습니다.

결국 뭐 다시 검색해서 만들기는 했는데, 나중에 또 이런 사태가 발생할 수 있으니 기록으로 남겨둡니다.

요약

  1. 젯팩 내장 함수인 stats_get_csv 를 이용
  2. stats_get_csvpost_id 조건을 투입해서 조회
  3. 나온 결과물에서 views 를 추출해 반환해주기

함수 만들기

아주 간단한 함수이기 때문에 아래와 같이 간단하게 만들어 봅시다.

function get_pageview( $post_id ) {
    if ( function_exists('stats_get_csv') ) { 
        $args = array(
            'days' => -1,
            'limit' => -1,
            'post_id' => $post_id,
        );
        $results = get_pv( $args );
        $views = $results[0]['views'];
    } else {
        $views = 0;
    }
    return $views;
}

함수 자체가 꽤 간단하죠? 그 내용을 하나씩 뜯어 보도록 합시다.

자세히 보기

함수 선언

function get_pageview( $post_id ) {
    ....
}

먼저 함수 자체를 만들어줍니다. 저는 기억하기 쉽도록 get_pageview() 라는 이름으로 함수를 만들어주었습니다.
그런데 여기서 중요한게, 우리의 목적은 특정 포스트의 조회수를 찾아서 표시하는 것이기 때문에, $post_id 라는 변수명으로 인수를 받아 와야 합니다.

함수 확인

function get_pageview( $post_id ) {
    if ( function_exists('stats_get_csv') ) { 
        ....
    } else {
        ....
    }
    ....
}

그 다음은 우리가 필요로하는 stats_get_csv 함수가 존재하는지 확인하는 과정입니다. 원래 저 함수는 우리가 과거에 조회수가 높은 포스트를 알아내기 위해서 사용했던 함수였죠.

인수 세팅

...
        $args = array(
            'days' => -1,
            'limit' => -1,
            'post_id' => $post_id,
        );
...

이제 투입변수를 세팅합니다.

원래 조회수 높은 포스트 목록을 가져 올 때는 dayslimit 만을 조건으로 넣어, 특정 기간 동안 조회수가 높은 포스트를 limit 개 만큼 가져오는 것이었는데, 여기에 post_id 조건을 추가해 특정 포스트의 조회수를 조회 할 수 있습니다.

모든 기간에 대한 조회수를 가져오기 위해 days 는 -1 로 세팅했고, limit 는 어차피 특정 포스트에 대한 내용만 가져오기 때문에 1(한 개 포스트 조회) 또는 -1(개수와 상관 없이 모든 포스트 조회) 중 아무거나 넣어도 한 개만 조회 됩니다.

심지어 0을 넣어도 결과물은 나오네요.

결과물 변수에 담기

....
        $results = stats_get_csv( $args );
        $views = $results[0]['views'];
....
}

이제 조회 된 내용을 $results 라는 변수에 담아 봅니다.

stats_get_csv 는 기본적으로 여러 개의 종목 정보를 조회해 반환해주기 때문에, 실제 해당 종목의 조회수를 얻기 위해서는 $results 라는 결과물의 가장 첫번째(index = 0) 항목에서 views 라는 키에 대응하는 값을 가져와 $views 에 담아 줍니다.

그리고 그 값을 return 해주면 작업은 끝나죠.

조회수 표시하기

<? echo get_pageview( get_the_ID() ); ?>

그리고 실제로 워드프레스 테마나 플러그인에서 해당 함수를 사용하기 위해서는 위와 같이 get_pageview() 함수의 결과물을 echo 해주면 되는데, 해당 포스트의 ID 를 투입변수로 넣어주기만 하면 됩니다.


코드 자체도 복잡하지 않고, 심플하게 원하는 결과물을 얻을 수 있네요.

끝.

    댓글 남기기

© 모두의매뉴얼 2024
🗝️