[워드프레스] 젯팩을 이용해 “많이 본 문서” 목록을 가져오는 방법
워드프레스에서 젯팩은 다양한 편의 기능을 제공하고 있지만, 가끔은 내가 원하는 형식대로 만들고 싶을 때가 있잖아요? 저는 젯팩 위젯 중 조회수가 높은 문서 목록을 보여주는 “많이 본 문서”(Top posts, Most view 와 같은) 위젯을 직접 만들어 보고 싶었습니다.
조회 수 높은 포스트 목록 가져오기
가장 먼저 해야하는 것이 조회수가 높은 포스트의 목록을 가져오는 것이겠죠? 사실 이것만 되면 위젯으로 만드는 것은 어렵지 않으니 이 포스트에서는 목록을 가져오는 방법을 알아 봅시다.
일단 간단하게 전체 코드를 살펴 보면 아래와 같습니다.
<? function get_jp_topposts() { if ( function_exists( 'stats_get_csv' ) ) { $posts = stats_get_csv( 'postviews', array( 'days' => 5, 'limit' => 5 ) ); } if ( $posts ) { return $posts; } } ?>
생각보다 간단하죠? 하나씩 뜯어 봅시다.
if ( function_exists( 'stats_get_csv' ) ) { .... }
조건문의 function_exists( 'stats_get_csv' )
는 stats_get_csv
라는 젯팩 내장 함수가 존재하는지 확인하고 진행하기 위함입니다. stats_get_csv
는 젯팩 내장 함수로 젯팩이 설치되어 있다면 당연히 활성화 되어 있으니 걱정하지 않아도 됩니다.
$posts = stats_get_csv( 'postviews', array( 'days' => 5, 'limit' => 5 ) );
이 부분은 stats_get_csv
함수를 이용해 조회수가 높은 포스트 목록을 가져와 $posts
변수에 담는 것입니다. 파라미터로 들어가는 days
는 집계 기간을 의미하고, limit
는 몇 개의 포스트를 가져 올 것인지를 결정합니다. 위 코드에서는 5일 동안 조회된 포스트 중 조회수가 높은 상위 5개 포스트를 가져오라는 뜻이겠네요.
반환 값
stats_get_csv
함수는 배열로 값을 반환하는데 그 형식은 아래와 같습니다.
array( 'post_id', // ID 'post_title', // 제목 'post_permalink', // 고유 링크 주소 'views', // 조회수 );
위 값들만 잘 이용하면 충분히 “많이 본 문서” 목록을 만들 수 있겠네요.
주의사항
stats_get_csv
함수는 포스트 뿐만 아니라 페이지도 같이 집계합니다. 목록에서 페이지를 제외하고 싶으면 가져올 포스트 개수를 +10개 정도 넉넉하게 불러와서foreach
문으로 포스트 타입을 확인해 포스트 타입이post
인것만 다시 반환 하도록 해야 할 것 같습니다.- 기한을 무제한으로 잡고 싶다면 파라미터 중
days
를-1
로 설정하면 됩니다.
이렇게 가져온 포스트 목록을 이용해 위젯으로 만들면 됩니다.
끝.
댓글 남기기