WordPress | 投稿一覧ページに記事毎のアクセス数を表示する方法

WordPress管理画面での記事一覧ページに記事毎のアクセス数を表示する方法になります。
※この方法は人気表示プラグイン「WordPress Popular Posts」のデータを利用していますので「WordPress Popular Posts」がインストール・有効化されている事が前提となります。
表示サンプル
今回追加しているカラムは一週間分のアスセス数になります。上段がトータルアクセス数、下段に過去7日間の日別アクセス数を表示しています。


アスセス数表示用のカラムを追加
manage_posts_columns()を使って投稿一覧ページのカラム一覧を取得、アクセス数表示用のカラムを追加します。
functions.php
//文字数表示用のカラムを追加
add_filter('manage_posts_columns', function($columns){
$columns['view'] = "アクセス数";
return $columns;
});
任意の新しい配列のキー名と値(表示時、カラムのタイトルになります)を設定します。
※WordPress固有のキー名(author、categories 、tags、comments、date)とは重複しない様にしましょう。
アクセス数を取得して表示
manage_posts_custom_columnにて追加したカラムの場合に「WordPress Popular Posts」のデータからアクセス数を取得して表示します。
manage_posts_custom_columnは1ページに表示される記事の数だけループします。
functions.php
add_action('manage_posts_custom_column',function($column_name, $post_id){
//データベース情報をグローバル変数として取得
global $wpdb;
//タイムゾーンを設定
date_default_timezone_set('Asia/Tokyo');
if($column_name == 'view'){
//トータルアクセス数を表示
echo '<p>'.wpp_get_views( $post_id, 'all', false ).'</p>';
//日別アクセス数を表示
for ($i=0; $i >= -6; $i--) {
$wpdb->get_results("SELECT id FROM wp_popularpostssummary WHERE postid = $post_id and view_date = '".date('Y-m-d', strtotime($i.' day'))."'");
echo $wpdb->num_rows;
if($i != -6){echo '|';}
}
}
},10,2);
wpp_get_views()はトータル(all)の他にも過去一ヶ月(month)過去一週間(week)などのデータも取得可能です。
日別のデータはwpp_get_views()では取得できないので「WordPress Popular Posts」用のデータベースから取得しています。
マルチサイトの場合は「wp_popularpostssummary」ではなく「wp_サイトID_popularpostssummary」にて取得可能です。
サイトIDは「global $blog_id;」にて取得できます。
トータルのアクセス数だけで良ければサンプルコード中の//日別アクセス数を表示以下forの括りを削除して下さい。
また、文字数を表示する方法も紹介していますので、合わせるとちょっとしたSEOツールになるかと思います。
ディスカッション
[…] 【WordPress】投稿一覧ページに記事毎のアクセス数を表示する方法 | ONE NOTE […]
[…] 【WordPress】投稿一覧ページに記事毎のアクセス数を表示する方法 | ONE NOTE […]