※本ページは、アフィリエイト広告を利用しています。
こんにちは、ぬいぬい(@opitech_web)です!
投稿記事がどれくらい読まれているか、はブログやメディアサイトでは
運営していく上で、非常に重要な指標となってきます。
CocoonなどのWordPressテーマや、プラグインを使用すれば
複雑な設定なしで投稿の表示回数が確認できたりしますが…
テーマ追加やプラグインなしで実装して欲しいと依頼があった際に、
少し試行錯誤したので…備忘録をかねて、
今回はテーマやプラグインを入れなくても可能!
投稿管理画面にアクセス数を表示する方法をご紹介します。
①計測の流れの把握
まずは、投稿記事の表示回数の計測の概要です。
以下が計測の流れです。
- 【事前設定】投稿記事にアクセスがあった場合に、+1ずつカウントされるようにする
- 【事前設定】投稿記事のカウント数を、WP管理画面で表示されるようにする
- 投稿記事が閲覧される(+1ずつカウント)
- 2の画面で確認できる
流れを見ると事前設定だけしておけば、投稿記事が閲覧されるたびに自動でカウントが回っていくので、意外と簡単そう…かも。
注意点としては、この方法では実装後からのカウントとなるため、実装前のカウント数は含まれません。

それでは、次から早速実装していきましょう!
②functions.phpに計測するための関数を追加
まずは、functions.phpに計測・表示するための関数を追加していきます。
※functions.phpをいじる前は、忘れずバックアップを取っておくことをおすすめ
最初に、記事のアクセス数を測る関数の設定を行います。
//記事へのアクセス数を保存する
function setPostview( $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 {
$count ++;
update_post_meta( $postID, $count_key, $count );
}
}
//記事へのアクセス数を取得する
function getPostview( $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 addColumn( $defaults ) {
$defaults['view'] = 'アクセス数';
return $defaults;
}
add_filter('manage_posts_columns', 'addColumn');
//先程追加したカラムに、アクセス数を表示する
function addColumnId($column_name, $postID) {
if ($column_name == 'view') {
echo "アクセス数:".getPostview( $postID );
}
}
add_action('manage_posts_custom_column', 'addColumnId', 10, 2);
最後に、投稿管理画面で表示回数順にソートをできるようにしていきます



次に、投稿ページに計測するためのコードを入れ込みます。
// 追加したカラムに並び替えできるように設定する
function addColumnSort($columns){
$columns['view'] = 'my_sort';
return $columns;
}
add_filter( 'manage_edit-post_sortable_columns', 'addColumnSort');
// 並び替えは、アクセス数をキーにするよう設定する
function addSortKey( $query ) {
if ( $query->is_main_query() && ( $orderby = $query->get( 'orderby' ) ) ) {
switch( $orderby ) {
case 'my_sort':
$query->set( 'meta_key','post_views_count');
$query->set( 'orderby', 'meta_value_num' );
break;
}
}
}
add_action( 'pre_get_posts', 'addSortKey', 1 );
③single.phpに計測するための関数を追加
single.phpのファイル内に、以下コードを追加→保存します。
<?php setPostView(get_the_ID());?>
これでコード実装の部分は完了です。
最後に、WordPressの投稿管理画面で、問題なく反映されているか確認しておきましょう。


赤枠の部分に、「アクセス数」のカラムが追加され、内容も反映されていそうです。
ソート機能も動いており、問題なければOKです!
④追加要素
もし、自分がログインしている場合に閲覧した場合にカウントしたくないなら、これも設定を足すことで出来そうです。
より正確な数値に近づけたいなら、実装することをおすすめします。
①WPにログインしているユーザーが閲覧した場合、カウントしない場合
③で追加した、single.php内のコードを以下に書き直します。
<?php if( !is_user_logged_in() ) { setPostView(get_the_ID()); } ?>
まとめ
なるほど、こういう方法でプラグインなしでも実装できるんだと学んだ実装でした。
これを応用したら、ページに表示された場合に数値をカウントすることで、
正確な数値ではないものの、大まかなインプレッション数も取れそうな気がしますね。
折角なので、次回はそれも記事にまとめてみます!
▼WordPressおすすめ参考書