たまたま気がついた。
事の起こり
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()で出せるから両方に突っ込んだら片方が表示されなかった。
仕様です
そういう仕様です。受け入れましょう。
同じ日付の投稿があった場合最初の記事だけに、って制約がある。
https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_date
https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/get_the_date
get_the_date()はこれに含まれないみたいね。
最終更新日タグにも制限はかかってないので、the_date()だけが扱いに注意が必要な感じ。
https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_modified_date
https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/get_the_modified_date
対策
記事の投稿日は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版がある。
https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_modified_time
https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/get_the_modified_time
使用例
こんな感じ。
投稿日:<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; ?>
更新日は更新してなかったら表示しないでいいし、更新しても当日だったらセーフにしようって条件。
条件部分をがんばれば、一定期間後の更新なら表示っていうのも組める。それは前に書いた。
コメント