CounterrizeIIがインストできない

CounterrizeIIの自動アップデートに失敗。
旧版をアンインストした後に新版をインストしようとして、
フォルダがすでにあるのでインストを中止した模様。
フォルダを消したら、改めてインストできました。
ただ、
function counterize_gethitsyesterday()
を使って、昨日の訪問者数を表示するように改造していたので、
表示中に
PHP Fatal error:  Call to undefined function counterize_gethitsyesterday()
で画面右側がほとんど表示できない状態になる。
counterize.phpに

/* Returns amount of hits yesterday. */
 function counterize_gethitsyesterday()
 {
 $today = date("Y-m-d");
 $yesterday = date_i18n("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);
 }

※あ、修正モレ発見↑。
を追加し、ついでにメモ帳でJST表示に変更。

※置換文字列の先頭に半角空白を入れるのを忘れずに・・・
  1.  date(』 を  date_i18n(
  2. time()』を『 date_i18n(“U”)

今見ると、アクセスの時刻が9時間進んでいるので上の修正は不要かも。


ps 2011/05/30
ダッシュボードから一旦アンインストし、ファイルも削除して、再インスト。そして有効化。
ダッシュボードのCounterize II の編集ボタンを押し、ブラウザからPHPソースの最後に以下を追加。

/* 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);
}

date(),time()の修正は入れませんでした。
でも今日の分のデータは変なデータになったようです。


2011/06/01 再修正。
ほとんどは『 date(』 を『 date_i18n(』 にするといいみたいだが
date(“Y-m-d”,strtotime(“-1 day”)) のように引数が複数あると
date_i18n(“Y-m-d”,strtotime(“-1 day”));
では、ダメらしい。
date_i18nのヘルプ(英字)では
date_i18n( $dateformatstring, $unixtimestamp, $gmt )
となっているし、strtotimeも、unixtimestampを返すので正しいはずだ。
参照:WordPress で date() 関数と time() 関数が UTC +9 (JST) になってくれない
を読んでみると、
date_i18n(“Y-m-d”, date_i18n(“U”)-86400);
するといいらしい。
でもそれじゃ、日本じゃ
date_i18n( $dateformatstring, $jst, $gmt )
が正しいのかな?
ソースを見てみると、引数が一個のときはcurrent_time()を使っているようで、
しかもcurrent_time() が、引数が無い時は、日本ではJSTを返しているような気がする。
つまり、WordPress内では$unixtimestamp = LocalなTimeStampということなのか?
/* Returns amount of hits yesterday. */
function counterize_gethitsyesterday()
{
$today = date_i18n(“Y-m-d”);
$yesterday = date_i18n(“Y-m-d”, date_i18n(“U”)-86400);
$sql = “SELECT COUNT(1) FROM “.counterize_logTable().” WHERE timestamp >= ‘$yesterday’ AND timestamp < ‘$today’ “; $wpdb =& $GLOBALS[‘wpdb’]; return $wpdb->get_var($sql);
}
これで午前9時過ぎ頃でもいい感じ。
しかしWordPressの3からはソースいじるとひどい目に遭いそうですね。




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA