記事内にアクセスカウンタを付ける

2021/04/28

管理者用カウンタ

Simplicityでいいなと思うものの一つが、記事内にアクセスカウンタがある(付けられる)こと。こんな感じ。

赤矢印のところです。日や週等ごとの集計を表示してくれます。常時表示しているのではなくて、管理者としてログインしているときだけ表示します。一般公開するのではなくて、あくまで管理機能の一つという位置づけ。

カウントはSimplicityの機能ではなくてWordPress Popular Postsというプラグインの機能を使っています。ということは、このプラグインを使っていれば、テーマによらず似たようなことができるはず。

ということで、やってみました。こんな感じ。

表示位置などは違いますけど、目的のことはできています。

実装方法

では、実際のやり方。

大きく分けて二つのことを行います。

  1. 表示部をショートコードとして登録。
  2. そのショートコードを目的の場所に設置(表示)。

どちらも簡単なものです。

表示部

表示部のコードは以下のとおりです。

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を使って並べ替えています。

シンプルな組合せに過ぎませんが、やりたいことができると気持ちがいいものです。

この記事のタイトルとURLをコピーする

スポンサードリンク