WordPressの古い日付
2009/11/06 Friday(現在のバージョン2.8の)WordPressの日付・時刻は、1970年1月1日午前0時から始まります。それより前の時刻の記事(たとえば、1969年12月31日)を作成しても、通常のthe_time()関数での表示は閲覧時点の日付・時刻になってしまいます。
これは世界標準時なので、日本標準時で使う場合は1970年1月1日の午前9時より前の日付・時刻が使えません。
しかし、WordPressの記事自体は、MySQLの中に0000-00-00 00:00:00の形式で保存されています。将来的には、WordPress自体が対応してくれることを望みます。
で、あるアーカイブで古い文書を公開しているのですが、そこで1969年以前の日付を使いたいということになりました。前述の通り、幸いにもデータそのものは自由な日付を入力できるので、あとはそれを読み出して表示する関数を書けば対応できるだろうということになります。
というわけで、ここらへんを参考にPHPで初めて関数を書きました。(*^_^*)
<?php
function wp_date_in_mysql( $postid )
{
$sql_command =
"SELECT post_date FROM wp_posts WHERE ID='$postid'";
$result_resource = mysql_query( $sql_command );
if ( ! $result_resource ){
echo mysql_error();
} else {
$the_record = mysql_fetch_array( $result_resource );
$datestring =
substr( $the_record[ 'post_date' ], 0,10 );
return str_replace( "-", "/", $datestring );
}
}
?>
呼び出し側は、$s = wp_date_in_mysql( $post->ID );のように記事のIDを渡します(ループの中で使います)。
関数内では、MySQLのクエリーでその記事のレコードを読みだしています。
今回の仕事では、時刻のデータが不要だったので、まずsubstr()関数で0文字目から10文字分を切り出し、0000-00-00の形にしています。
次に、str_replace()関数で区切り記号を-(ハイフン)から/(スラッシュ)に置き換えています。
これを使ってもダッシュボードでは古い日付は正しく表示されないのですが、WordPressのコード自体をいじるのではなく、テーマのファイルに書き加えるだけなので、しばらくは使えるかな、という気がしています。


コメントを書く
登録ユーザーはログインしてコメントをつけることができます。