ブログをWordPressに変えてカウンターのプラグインを探してみたが、あまり多くは見つからなかった。
見つかったのはCounterize IIとVisitor CounterとCount per Dayだったが、Visitor Counterの方はドイツ語でよく分からなかったので、とりあえずCounterize IIを使ってみる事にした。
<日本語の対応>
日本語ファイル入手先→wppluginsj.sourceforge.jp/i18n-ja_jp/counterize-ii/
フォルダ内にある counterize-ja_UTF.mo と counterize-ja_UTF.po から「_UTF」 の部分を削除してcounterize-ja.mo 、 counterize-ja.po にリネームする。
<昨日の表示に対応させる>
下記のコードを「counterize.php」に追加。
/* IP重複なしのアクセスカウンター */
# Returns amount of unique hits yesterday
function counterize_getuniquehitsyesterday()
{
$today = date("Y-m-d");
$yesterday = date("Y-m-d", time()-86400);
$sql = "SELECT count(DISTINCT ip) FROM ".counterize_logTable()." WHERE timestamp >= '$yesterday' AND timestamp < '$today'";
$wpdb =& $GLOBALS['wpdb'];
return $wpdb->get_var($sql);
}
/* IP重複ありのアクセスカウンター */
# Returns amount of hits yesterday.
function counterize_gethitsyesterday()
{
$today = date("Y-m-d");
$yesterday = date("Y-m-d",strtotime("-1 day"));
$sql = "SELECT COUNT(1) FROM ".counterize_logTable()." WHERE timestamp >= '$yesterday' AND timestamp < '$today' ";
$wpdb =& $GLOBALS['wpdb'];
return $wpdb->get_var($sql);
}
<カウンターの設置>
<!--IP重複なしのユニークアクセスカウンター -->
<ul>
<li>Total : <?php echo counterize_getuniqueamount(); ?></li>
<li>Today : <?php echo counterize_getuniquehitstoday(); ?></li>
<li>Yesterday : <?php echo counterize_getuniquehitsyesterday(); ?></li>
<li>7days : <?php echo counterize_getuniquelatest7days(); ?></li>
<li>now : <?php echo counterize_get_online_users(); ?></li>
</ul>
<!--IP重複ありのヴューカウントカウンター-->
<ul>
<li>Total : <?php echo counterize_getamount(); ?></li>
<li>Today : <?php echo counterize_gethitstoday(); ?></li>
<li>Yesterday : <?php echo counterize_gethitsyesterday(); ?></li>
<li>7days : <?php echo counterize_getlatest7days(); ?></li>
<li>now : <?php echo counterize_get_online_users(); ?></li>
</ul>
<時差の補正>
当日24時を過ぎてもカウンターがクリアーされず、昨日のままだった。
管理ページの「一般設定のタイムゾーン」を「UTC+9」にしているのになぜかダメだ。
解決策として、
WordPressのトップにある「wp-settings.php」の35行目付近の記述を次のように変更した。
変更前
// Set default timezone in PHP 5.
if ( function_exists( 'date_default_timezone_set' ) )
date_default_timezone_set( 'UTC' );
変更後
// Set default timezone in PHP 5.
if ( function_exists( 'date_default_timezone_set' ) )
date_default_timezone_set( 'UTC+9' );
しかし、この設定変更は、Wordpresのバージョンアップを行った場合、再度同じ書き換えが必要。