お世話になっております。小林です。
「wordpress 日付 表示されない」で検索すると以下のブログ記事がよくひっかかりますね。
□WPで同じ日に二度更新したときの公開日時の表示について – 2009/10/09
https://liginc.co.jp/programmer/archives/231
□WordPress(ワードプレス)でthe_dateタグは同日だと表示されない – 2011/01/20
https://liginc.co.jp/designer/archives/2266
双方とも、素晴らしい記事。そしてサイト自体もそれはそれはドッカンドッカンしてると思います。
では、
今回はWordPress*のthe_dateタグで日付が表示されない件について、それが何故か、そしてもう一つの解決策について書いていこうと思います。
まず、the_dateの中身はこんな記述になっております。
function the_date( $d = '', $before = '', $after = '', $echo = true ) {
global $currentday, $previousday;
$the_date = '';
if ( $currentday != $previousday ) {
$the_date .= $before;
$the_date .= get_the_date( $d );
$the_date .= $after;
$previousday = $currentday;
$the_date = apply_filters('the_date', $the_date, $d, $before, $after);
if ( $echo )
echo $the_date;
else
return $the_date;
}
return null;
}
注目していただきたいのは、こちらの記述。
if ( $currentday != $previousday ) {
これはですね、$currentday(ここで表示しようとする日付)と$previousday(ひとつ前で表示された日付)を比較して同じだったら、何も表示しない、ということ実現するための記述です。
つまりwordpressは明確な意志をもって同じ日付の表示はしないと、そういう仕様で実装されている訳ですね。冗長だと言う事なんでしょうね。
でも、同じ日付だって表示したい。
そういうみなさんは、だいたい以下の回避方法をとっておられる。
the_timeタグを利用する。
the_timeタグの中では先のような処理がありませんのでね。先のブログ記事でもそのようにしております。
ただ、こちらの場合はせっかく管理画面で設定した日付のフォーマットが反映されません。
日付のフォーマットはその都度記述するスタイルです。
そこで、もうひとつの回避方法をご紹介します。
function my_the_post() {
global $previousday;
$previousday = '';
}
add_action( 'the_post', 'my_the_post' );
上記のコードをテーマ内のfunctions.phpにコピペしてください。
これだけです。
何をしているかというと、the_postが実行される度に$previousdayをリセットしてしまいなさい、
つまり、ひとつ前に表示した日付を忘れてしまいなさいと、そういう記述なんですね。
これで、管理画面で設定した日付のフォーマットで同じ日付かどうか関係なく表示してくれるようになるはずです。
…あまり見かけないのは他に影響が出る可能性があるからなんでしょうかね。
*WordPress 3.3.1だったら嬉しいなって
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。