mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

WordPress - CounterizeIIから記事毎のアクセス数取得関数作成!

[ ブログ ] [ PHP, WordPress ]

こんばんは。

昨日はアクセス解析プラグイン「CounterizeII」のデータから人気記事の一覧を取得する関数を作成しました。(参照「WordPress - CounterizeIIから人気記事リスト取得関数作成!」)

今日はその応用で各記事の総アクセス数を取得する関数を作成してみました。昨日よりも簡単。

以下に記録しておきます。

作業記録

1. SQL実行テスト

関数をいきなり作成する前に、前もってSQLを作成してテスト見る必要があります。 phpMyAdmin等でSQL文を作成・実行して、希望通りの結果が得られるか確認します。 今回はページアクセス状況が記録されている「wp_Counterize_Pages」テーブルから特定の「投稿ID」の「アクセス数」を取得します。 以下がテスト用SQLです。

1
2
3
4
SELECT SUM( count )
  FROM `wp_Counterize_Pages`
 WHERE postID = 4767
 GROUP BY postID

【2011/09/14修正】wp_Counterize_Pagesには同じ”postID”でも複数レコードが存在するため、同じ”postID”は合算するように修正。

2. 関数作成

上記のSQLを関数化します。投稿IDを引数で指定します。 WordPressの使用中のテーマ内の「functions.php」に以下のように記述を追加します。

1
2
3
4
5
6
7
8
9
  function get_pageviews( $postID ) {
    global $wpdb;
    $sql = "SELECT SUM( count ) "
         . "  FROM `wp_Counterize_Pages` "
         . " WHERE postID = " . $postID
         . " GROUP BY postID ";
    $res = $wpdb->get_var($sql);
    return $res;
  }

【2011/09/14修正】wp_Counterize_Pagesには同じ”postID”でも複数レコードが存在するため、同じ”postID”は合算するように修正。

3. 関数使用設定

人気記事リストを表示させたい場所にPHPソースを記述します。 今回は各記事の投稿日時表示位置の直後に追加しました。

1
<?php echo number_format( get_pageviews( $post->ID ) ); ?> Views

※投稿IDの取得は"the_ID()“ではなく”$post->ID"です。"number_format"は取得した数値を3桁ごとのカンマ区切りにするために必要。

参考サイト


前回、今回とデータさえあればプラグインなど使用しなくても簡単に取得できるという例でした。 プラグインを使用せず自分のテーマ内の関数に定義しているので、プラグインのアップデートによる再カスタマイズの作業も不要です。 それに、簡単な処理にもかかわらず、プラグインで数々のプロセスを経て必要以上に動作が重くなることもありません。

以上。

Comments