管理画面の記事一覧に「WordPress Popular Posts」のビューカウントを表示する

こんにちは、えんぞーです。
ブログを書いている内に当然ながら昔の記事は情報が古くなったりでアクセスされないページが出てきますよね。
アクセス数が無いという事はコンテンツ力も無いという事なので、削除したり「noindex」を設定してサイト全体の質を高めたい。
なので、それを判断する基準が欲しい。
簡単に言うとアクセスがある記事と無い記事をぱっと見で判断したい・・・っていう事なんですが。(あくまで判断基準の一つとしてです)
「noindex」ってなんだよっていう人は ↓ こちらのバズ部さんの記事がわかりやすいかと思います。
管理画面の記事一覧で確認できるのがいいな
記事一覧でどのくらいのアクセスがあるのかわかればいいのでプラグインを探してみます。
すると**「WP-postviews」**が出てくるのですが、こちらのプラグインだとキャッシュを使用するサイトではうまくカウントされないと言う事があるようです。
なので、普段使っている「WordPress Popular Posts」のカウントを記事一覧に表示できればそれが参考値になるからそれでいいや・・・という結論に至りました。
実装自体は特に難しい事はないのでテーマファイルに下記の PHP コードを貼れば完了します。
「WordPress Popular Posts」のプラグインが無いと動かないのでそこだけは注意です。
1//管理画面での記事一覧カラムカスタマイズ
2//WordpressPoplarPostのビューカウントを表示する
3function admin_posts_columns($columns) {
4 $columns['subtitle'] = "ビュー";
5 return $columns;
6}
7function add_admincolumn($column_name, $post_id) {
8 if( $column_name == 'subtitle' ) {
9 echo wpp_get_views($post_id, 'monthly', true);//←ここの値で集計期間変更dailyとかweekly全部の場合はall
10 }
11}
12if ( function_exists('wpp_get_views') ) {
13 add_filter( 'manage_posts_columns', 'admin_posts_columns' );
14 add_action( 'manage_posts_custom_column', 'add_admincolumn', 10, 2 );
15}
上記コードをテーマファイルの function.php に貼ってください。
ハイライトされている行の「monthly」と指定してある部分で集計期間を設定しているのでdaily、weekly、monthly、allの中からお好みで。
管理画面の記事一覧でこのようにビューの集計が出ます。
項目名の「ビュー」が嫌であれば該当部分のソースも修正してくださいw

当然一覧に表示するときに計算している事になるのでレスポンス的には悪くなるので一度に表示する記事数等でストレスにならない数を設定して下さい。
おまけ:集計期間 1 年とかに出来ないの?
小見出しの通りの疑問になりますけどw
直近一ヶ月か全アクセス数だけでも十分参考にはなるかと思いますけど、もう少し広げた形で集計したいのであれば「WordPress Popular Posts」自体にその部分を追加しましょう。
wp-content/plugins/wordpress-popular-posts/wordpress-popular-posts.php
1 case "yesterday":
2 $interval = "1 DAY";
3 break;
4
5 case "daily":
6 $interval = "1 DAY";
7 break;
8
9 case "weekly":
10 $interval = "1 WEEK";
11 break;
12
13 case "monthly":
14 $interval = "1 MONTH";
15 break;
16
17 case "yearly":
18 $interval = "1 YEAR";
19 break;
20
21 default:
22 $interval = "1 DAY";
23 break;
24}
上の例で言いますと、3224 行目~ 3226 行目の部分で”yearly”として一年間の期間を足しています。
この様にお好みで期間を足して、先ほどの期間指定部分に「yearly」と指定する事で集計期間のカスタマイズが可能です。
ただ、この方法はプラグインがアップデートされると元に戻る事になるので注意して下さい。
function.php やプラグインファイルを編集すると最悪 Wordpress が動かなくなる可能性もあるのでしっかりバックアップをとってから作業するようにしましょう。
追記:管理画面の記事一覧で「日時」カラムに時間を追加
予約の投稿が複数に渡る場合、日付はわかるけど何時に投稿されるかわからなかったのでこちらも追加しました。
参考サイト
WordPress:投稿一覧の日付部分に予約投稿の公開時刻を表示させる方法 | NxWorld
1// 記事一覧画面に時間も追加
2function add_scheduled_posts_date_column_time( $h_time, $post ) {
3 if ($post->post_status == 'future') {
4 $h_time .= '<br />' . get_post_time( 'g:i a', false, $post );
5 }
6 return $h_time;
7}
8add_filter ( 'post_date_column_time', 'add_scheduled_posts_date_column_time', 10, 2 );
「get_post_time」の引数”g:i a”の部分はこのままだと「5:42 pm」の様なフォーマットになります。
私は 24 時間表記が好みなのでこの部分を”H:i”としています。(17:42 と出ます)
フォーマットについては下記リンクで確認できます。
日付と時刻の書式 – WordPress Codex 日本語版
とりとめのないまとめ
一般的には「WP-postviews」で問題ない様な気もしますが、私と同じような境遇の人もいるのではないでしょうか。
このサイトでは無いですが、Nginxとphp-fpmの組み合わせでキャッシュしているサイトでは正常にカウント出来ない様でした。