管理者用カウンタ
Simplicityでいいなと思うものの一つが、記事内にアクセスカウンタがある(付けられる)こと。こんな感じ。
赤矢印のところです。日や週等ごとの集計を表示してくれます。常時表示しているのではなくて、管理者としてログインしているときだけ表示します。一般公開するのではなくて、あくまで管理機能の一つという位置づけ。
カウントはSimplicityの機能ではなくてWordPress Popular Postsというプラグインの機能を使っています。ということは、このプラグインを使っていれば、テーマによらず似たようなことができるはず。
ということで、やってみました。こんな感じ。
表示位置などは違いますけど、目的のことはできています。
実装方法
では、実際のやり方。
大きく分けて二つのことを行います。
- 表示部をショートコードとして登録。
- そのショートコードを目的の場所に設置(表示)。
どちらも簡単なものです。
表示部
表示部のコードは以下のとおりです。
function func_print_wpp_count() {
if (is_admin_bar_showing() && function_exists('wpp_get_views')) {
return "全体:" . wpp_get_views(get_the_ID(), 'all')
. "  月:" . wpp_get_views(get_the_ID(), 'monthly')
. "  週:" . wpp_get_views(get_the_ID(), 'weekly')
. "  日:" . wpp_get_views(get_the_ID(), 'daily');
}
else {
return "";
}
}
add_shortcode('print_wpp_count', 'func_print_wpp_count');
このコードを(子)テーマのfunctions.phpに追加します(コピペでOKです)。または、Code Snippetsプラグインを使っても大丈夫です。テーマには依存しないものですから、私はCode Snippetsで行いました。Code Snippets自体はこのブログで何度か紹介しています。例えばこちらの記事。
これで、print_wpp_countという名前のショートコードが作られます。
ショートコード設置
続いて、表示させたい場所に上で作ったショートコードを設置します。ウィジェットを使うのが簡単だと思います。
カスタムHTMLを使って、上で作った表示部のショートコードを書くだけです。
[print_wpp_count]
これだけです。実に簡単です。
テーマファイルをいじったりするわけではないのでどのテーマでも使えます(使えるはずです)。ただし、上に書いたように、WordPress Popular Postsプラグインは必須です。表示スタイルや表示場所はお好みに合せて調整して下さい。
記事一覧にアクセスカウンタ
実は、Simplicityではトップページでの記事一覧にも管理者用のアクセスカウンタが付きます。
これもなんとか実装できないかと考えたのですが無理でした。テーマ自体をいじればできそうなのですが、それはやりたくないです。テーマがバージョンアップする度に同じ変更を入れなきゃいけませんから。残念ながら、テーマには直接手を入れずに実装する方法は思いつきませんでした。もし、その辺り、ご存知でしたら教えて下さい。
代りに、投稿記事一覧の画面にアクセス数の表示を実装してみました。
まぁ、これでもいいかなと思います。
あちこちのサイトを参考にして実装したので、特にどれをということはないのですが、一つ参考記事を挙げておきます。
実際に私が作ったコードがこちら。
if (function_exists('wpp_get_views')) {
add_filter('manage_posts_columns',
function($columns) {$columns['wpp_views'] = "アクセス数"; return $columns;}
);
add_action('manage_posts_custom_column',
function($column_name, $post_id) {
if($column_name == 'wpp_views'){
echo wpp_get_views($post_id, 'all')
. ' ' . wpp_get_views($post_id, 'monthly')
. ' ' . wpp_get_views($post_id, 'weekly')
. ' ' . wpp_get_views($post_id, 'dayly');
}
},
10, 2
);
}
上のものと同様に、これも(functions.phpに書き込むのではなく)Code Snippetsを使いました。また、表示場所の指定は、こちらの記事で紹介したAdmin Columnsを使って並べ替えています。
シンプルな組合せに過ぎませんが、やりたいことができると気持ちがいいものです。