[wp]the_date()は一日一回という話

たまたま気がついた。

事の起こり

single.phpとかを作る際に、SEOを気にかけて<time>を作った。HTML的にはざっとこんな感じになる。

2022/04/06に投稿した
<time datetime="2022-04-06" itemprop="datepublished">2022/04/06</time>
2022/04/06に更新した
<time datetime="2022-04-06" itemprop="datemodified">2022/04/06</time>

タグで挟んだところとタグの中身で2箇所日付を入れる場所がある。記事の投稿日はthe_date()で出せるから両方に突っ込んだら片方が表示されなかった。

仕様です

そういう仕様です。受け入れましょう。

同じ日付の投稿があった場合最初の記事だけに、って制約がある。

テンプレートタグ/the date - WordPress Codex 日本語版
テンプレートタグ/get the date - WordPress Codex 日本語版

get_the_date()はこれに含まれないみたいね。

最終更新日タグにも制限はかかってないので、the_date()だけが扱いに注意が必要な感じ。

テンプレートタグ/the modified date - WordPress Codex 日本語版
テンプレートタグ/get the modified date - WordPress Codex 日本語版

対策

記事の投稿日はthe_date()だけでなくthe_time()でも出力できる。the_time()を使っておけば安全。

<?php the_date('Y/m/d'); ?>
<?php the_time('Y/m/d'); ?>

というか、the_date()じゃないと組みづらいときだけthe_date()を使うのがいいでしょうね。

何らかのポリシーがあってtimeは嫌だ、dateがいいって人はget_the_date()で取得したのをechoで出せばいい。

最終更新日もtime版がある。

テンプレートタグ/the modified time - WordPress Codex 日本語版
テンプレートタグ/get the modified time - WordPress Codex 日本語版

使用例

こんな感じ。

投稿日:<time datetime="<?php the_time('Y-m-d'); ?>" itemprop="datepublished"><?php the_time('Y/m/d'); ?></time>
<?php if( get_the_time('Ymd') !== get_the_modified_time('Ymd')): ?>
更新日:<time datetime="<?php the_modified_time('Y-m-d'); ?>" itemprop="datemodified"><?php the_modified_time('Y/m/d'); ?></time>
<?php endif; ?>

更新日は更新してなかったら表示しないでいいし、更新しても当日だったらセーフにしようって条件。

条件部分をがんばれば、一定期間後の更新なら表示っていうのも組める。それは前に書いた。

コメント

タイトルとURLをコピーしました