MovableType で、エントリーの公開日を取得する

MovableType で 20個くらいのブログを公開されているお客さんがいらっしゃる。

んで、公開しているブログの一覧ページがあって、それぞれのブログ名の横に、そのブログの最新公開日をわしが作ったプログラムでセットしている。

・・・がバグってた。(^^;

引っ張ってきている日付が公開日ではなく作成日だったのだ。

SELECT A.entry_blog_id AS blog_id,
       MAX(A.entry_created_on) AS release_date
FROM   mt_entry A
    JOIN
       (SELECT entry_blog_id
        FROM mt_entry
        GROUP BY entry_blog_id
        ORDER BY entry_blog_id) B
    ON A.entry_blog_id = B.entry_blog_id
GROUP BY A.entry_blog_id;

という SQL で、それぞれのブログの entry_created_on の一番大きいヤツ(つまり最新の entry_created_on)を取ってきていたんだが、entry_created_on って作成日じゃん。'entry_create' だからな。

だから、2月14日にエントリーを作成すると、作成日には 2009-02-14 がセットされる。
そして、このエントリーを 2月18日に公開すると、公開日には 2009-02-18 がセットされるが、作成日は当然 2009-02-14 のままだ。
なので、2月18日に公開したにも関わらず、ブログの横の最新公開日は 2月14日のままになっていたのだ。

実は、このお客さんは以前は MovableType 3.x を使っており、このプログラムはその頃から使っていたのだがあまり問題にはならなかった。最近、4.x にバージョンアップしてから問題になったのだ。

どうも、(聞いた話なので間違いがあるかもしれないが)3.x の時は、エントリーを公開すると、作成日も公開した日にちに更新されていたようなのだ。
つまり、上の例で言うと、2月18日に公開したら、作成日にも 2009-02-18 がセットされるということだ。だから、作成日を引っ張ってきてても、公開したあとにはちゃんと最新公開日が更新されていたわけである。

ただ、この場合も、作成日を引っ張っていると、まだ公開していないうちから最新公開日が更新されてしまうので、どっちみち問題があるのだ。
公開したのに最新公開日が更新されない場合よりも目立たないので、3.x 時代は誰も日付がおかしいことに気づかなかったのだろう。

mt_entry テーブルで公開日がセットされているのは entry_authored_on だそうだ。

ということで、上記の SQL 文の

       MAX(A.entry_created_on) AS release_date

を、

       MAX(A.entry_authored_on) AS release_date

に変更してOK。
実際の公開日が最新公開日にセットされるようになった。

トラックバック(0)

このブログ記事を参照しているブログ一覧: MovableType で、エントリーの公開日を取得する

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/420

コメントする

このブログ記事について

このページは、shinodaが2009年2月19日 00:14に書いたブログ記事です。

ひとつ前のブログ記事は「昨日は広島も雪」です。

次のブログ記事は「今シーズンの応援用ユニフォーム」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら