WordPress 2.9 リリースと 2.9 対応版 wp-kyodeki とタイムゾーンと

というわけで、まさに日本時間で昨日になりますが WordPress 2.9 がリリースされました。 めでたい。 いろいろ新機能もあるようで使うのが楽しみです 🙂

さてさて、昔はつくっていたプラグインがバージョンアップでよく動かなくなっていたりしていたのでベータでチェックとかしていたのですが、最近わりと動くのでさぼってたら、ふと wp-kyodeki がおかしくなっているよう、、その動作を見てコアにとある変化があったのに気がつくぼく・・・。(←遅い

というわけでとりあえず wp-kyodeki。

このプラグインはアクセスカウンタみたいなもんですが、日付をまたぐとカウントがクリアされる仕様になっております。(もともとアクセスデータを蓄積しないようにつくったプラグインでした)

夜行性のぼくは 2.9 にアップデートされた我がサイトのサイドバーをみて、日付をまたいだのにカウントがクリアされていないことに気がついたのです。。

というわけで不具合がありましたので、 JSeries にリリースしました。お使いの方は更新ください。

WordPress Plugins-JSeries » wp-kyodeki (本日人気の記事表示ウィジェット)

タイムゾーンでの日付変更クリアとならない不具合が修正されます。

さて、なんでだろうという話ですが、コアの wp-settings.php に以下のコードが追加されていました。

if ( function_exists('date_default_timezone_set') )
    date_default_timezone_set('UTC');

PHP の date 関数の戻り値などに影響する、timezone の設定でこれが標準時間になるようになっています。 というわけで、これがなかった今までは日本時間が戻ってきていたのですが、UTC になったので標準時間がもどってくるようになった、ということでした。

wp-kyodeki の不具合です。 冷静に考えたら海外サーバだと WordPress のタイムゾーンを日本に設定していてもあちらの時間で更新されていましたね。すいません(笑)

で、そういやコアがどうなっているのかあんまり考えたことなかったなぁとちらほらソースをみていると、結構 date を生でつかっているところがあるようです。

まぁ、いまも日本タイムゾーン設定で海外サーバ使われている方も多くて問題になっていないようなのでコアは大丈夫かと思いますが、プラグインは考慮漏れているものがあるかもしれない(あんまりないと思いますが)ので、万が一 2.9 の日付系で問題があったら疑ってみてください。 🙂

WordPress 2.9 リリースと 2.9 対応版 wp-kyodeki とタイムゾーンと」への14件のフィードバック

  1. Ktai Style も似た問題が発生しました。携帯ログイン機能で、セッションの有効期限の設定は PHP の date() なのに (WordPress 2.9 + PHP 5.1 以降なら UTC) 、期限切れセッションの確認は MySQL の NOW() (これはローカルタイム) ということで、日本の場合は「9時間前の古いセッション」と見なされてログインできなくなっていました。

    NOW() をやめて PHP の date() + time() の組み合わせで時刻設定することで解決しました。なかなか根が深い問題で難しいですね。

    Ktai Entry の方も相当慎重に date と gmdate() の使い分けをしているつもりですが、date() を使っている部分はローカルタイムで動くという前提をしているので不具合が出そうです。

  2. あ〜、なるほど date() と MySQL の NOW() ですね。 ちょっとぼくも依存しているコードがないか確認してみます。ありがとうございます。 🙂

    日付系の変更は影響が広範囲で怖いですね。昨日、気がついて汗かいてしまいました(笑)

  3. こんにちは。WordPress Related Post for Japaneseをいつも使わせていただいています。ありがとうございます。

    早速なのですが、wordpressを2.9にアップグレードしたところ、WordPress Related Post for Japaneseが機能しなくなりました。
    症状は2.9にアップグレードしてから投稿したものに限って表示がされなくなり、以前に投稿したものは表示されております。

    同時に予約投稿も失敗するようになりました。
    ですのでwordpressを2.8にしばらくの間、戻そうと思っております。
    ただ使わせていただくのみで、困ったときだけ泣きつくことを申し訳なく思います。
    お忙しいところ恐縮ですが、よろしくお願いいたします。

  4. arinopapa さん、こんにちは。 🙂

    ご連絡ありがとうございました!
    こちらでも、jrelated の取得と予約投稿が 2.9 で動作しないのを確認しました。

    まだぱっと見なのですが、どうも wp-cron という予約系を司る WordPress コアに備わる機能がうまく動いていないように見えます。両者とも wp-cron を利用しています。 ping の送信などもうまくいかないかもしれません。(急ぎでみていますので違う理由の可能性も大いにあります!

    ちょっと週末にでもプログラムをみてみますが、とりあえずお急ぎの場合は

    http://www.example.com/wp-cron.php

    にブラウザからアクセスしてみてください。(www.example.com の部分を対応サイトに置き換えてください)

    まっしろの画面がでると思いますが、この後に jrelated の場合は取得が開始されるハズです。(予約投稿もこれで投稿されると思いますが、手で時間帯にアクセスしないといけないので実用ではありませんね。。)

    調べて何か分かりましたらこのサイトで週末にでもお知らせしますので、お手数ですがウォッチしていただければと思います。jrelated は別な不具合も発見されていますので、”予約”を使わない版とあわせまして近日中に新しい版をリリースする予定です。

    以上、ありがとうございました。 今後ともよろしくお願いいたします。 😀

  5. ひろまさ様、こんばんは。
    情報を教えていただき、ありがとうございます。
    では2.91がでるまで、2.86で運用していようと思います。

    WordPress Related Post for Japaneseを使わせていただくようになってから、ページビューが飛躍的に伸びました。
    「永遠のド素人」であっても、作者様のような方のお力によって、やりがいのあるブログ運営をなすことが出来ることを感謝いたします。

  6. こんにちわ。

    1.02にバージョンアップしたのですが、日付が変わってもカウントはクリアされませんでした。

    何か過ちを犯しているんでしょうかぁ。
    どうぞよろしくお願いします。

  7. yoichi さん、こんばんは。 🙂

    ご連絡ありがとうございました。調査してみます。
    実は他にも同様の現象が起きている方がいらっしゃいましたので、ぼくがなにか過ちを犯していそうです。。

    分かりましたらサイトでお知らせしますので、申し訳ありませんがお待ちいただければと思います。

  8. yoichi さん

    ちょっとまだ調査中なのですが、データベースの (wp_)options の中の gmt_offset という項目に何が入っているか調べていただいてよろしいでしょうか?

    想定だと gmt_offset が空白になっていると思います。本来は日本のタイムゾーンを表す 9 が入るはずなのですが、ここが WordPress 管理画面の操作で消えてしまう事象を確認しました。(WordPress コアのほうを調べています)

    ということで、もし空白でしたら DB を直接書き換えて 9 にしていただくことで kyodeki に関してはとりあえず解決できると思います!

  9. ひろまささん

    ごめんなさい。
    そもそもデータベースの (wp_)optionsってのはどこをみたらいいのでしょうか。無知ご容赦…

  10. いえいえ、すいません。

    phpmyadmin などの別なソフトウェアを使って、WordPress のデータベースをみまして、その wp_options というテーブルの gmt_offset という項目の内容を見る感じになります。 🙂

  11. ありがとうございます。

    で、wp_optionsのテーブルを見たのですが、あるのはoption_id、blog_id、option_name、option_value、そしてautoloadというフィールドだけでgmt_offsetってのはありませんでしたぁ。

  12. yoichi さん

    返信遅れましてすいません。 テーブルの件ですが、phpMyAdmin であれば wp_options を左ペインでリンク選択した後、上の「表示」を押していただくと内容がでます。

    さらに調べたところ、以下のように2ヶ所をするとうまくいくようです。

    gmt_offset 9
    timezone_sting (空白・未設定にします)

    あわせて、コアの不具合のようなので本家のほうに調査のお願いもしてみました。

  13. ひろまささん

    レスが遅くなってしまい、すんません。
    先ほどご指示の通り改定してみましたのでしばらく様子を見てみます。

コメントを残す