- WordPressの予約投稿で記事を投稿したら、投稿日のとなりの更新日が過去日付になっていた。カッコ悪い。
- 過去日付になっている更新日を非表示にする方法はないかな?
こういった質問にお答えします。
WordPressでブログを運営している人の中には、毎日決まった時間に投稿したい、記事を2本書けたから明日分を予約投稿しよう、などの理由で、予約投稿を活用している人は多いのではないでしょうか?
このKatsuhiroBlogはWordPressで運用していて、記事の投稿は予約投稿を使って行っています。
しかし、最近ある欠点に気づきました。
それは、更新日に投稿日より過去の日付が表示されてしまうことです。
このような感じです。ちょっとカッコ悪いですよね。
記事が投稿されたあとに、記事の更新操作を行えば、更新日が更新されますが、いちいちやるもの手間ですよね。
そこで、今回はWordPressのソースコードを修正して、更新日が投稿日より過去の日付の場合は、更新日を非表示にするようにします。
以下の順番で進めます。
- そもそもなぜ更新日が投稿日より過去の日付になってしまうのか
- 更新日が投稿日より過去の日付の場合更新日を非表示とする方法
そもそもなぜ更新日が投稿日より過去の日付になってしまうのか
そもそもなぜ更新日が投稿日より過去の日付になってしまうのでしょうか?理由は、更新日と投稿日の違いにあります。
- 「更新日」は記事を最後に更新した日付
- 「投稿日」は記事を投稿した日付
になります。
WordPressで予約投稿をすると、例えば、以下のような感じになります。
2019/03/31 | 予約投稿を「2019/04/01」に設定して投稿 → 更新日=「2019/03/31」 |
2019/04/01 | 自動的に投稿がされる → 投稿日=「2019/04/01」、更新日はそのまま |
つまり、「2019/04/01」に自動で投稿がされても、最後に更新した日付は「2019/03/31」なので、更新日が過去の日付となってしまうのです。
更新日が投稿日より過去の日付の場合更新日を非表示とする方法
さっそく、WordPressのソースコードを修正してみましょう。以下の順番で進めます。
- single.phpの修正
- 修正後の表示確認
single.phpの修正
「single.php」の修正です。「single.php」は記事の画面のソースコードです。
WordPressのダッシュボードから「テーマエディタ」→「個別投稿」を選択しましょう。
修正前のソースコードはこんな感じです。
<p><span class="kdate">
<?php if ( get_the_date() != get_the_modified_date() ) : //更新がある場合 ?>
投稿日:<?php echo esc_html( get_the_date() ); ?>
更新日:<time class="updated" datetime="<?php echo esc_attr( get_the_modified_date( DATE_ISO8601 ) ); ?>"><?php echo esc_html( get_the_modified_date() ); ?></time>
<?php else: //更新がない場合 ?>
投稿日:<time class="updated" datetime="<?php echo esc_attr( get_the_date( DATE_ISO8601 ) ); ?>"><?php echo esc_html( get_the_date() ); ?></time>
<?php endif; ?>
</span></p>
修正後のソースコードはこんな感じです。
<div class="blogbox">
<p><span class="kdate">
<?php if ( get_the_date() != get_the_modified_date() and get_the_date() < get_the_modified_date() ) : //更新がある場合 かつ 更新日 > 投稿日 ?>
投稿日:<?php echo esc_html( get_the_date() ); ?>
更新日:<time class="updated" datetime="<?php echo esc_attr( get_the_modified_date( DATE_ISO8601 ) ); ?>"><?php echo esc_html( get_the_modified_date() ); ?></time>
<?php else: //更新がない場合 または 更新日 < 投稿日 ?>
投稿日:<time class="updated" datetime="<?php echo esc_attr( get_the_date( DATE_ISO8601 ) ); ?>"><?php echo esc_html( get_the_date() ); ?></time>
<?php endif; ?>
</span></p>
</div>
- 更新がある場合 かつ 更新日 > 投稿日 は、投稿日と更新日を両方表示
- 更新がない場合 または 更新日 < 投稿日 は、投稿日のみ表示
という風に修正しました。
修正後のソースコードを貼り付けて、「ファイルを更新」を押してください。
これで修正完了です。
修正後の表示確認
修正完了ができたら、表示確認を行いましょう。
修正前はこんな感じでした。
修正後は・・・
ちゃんと更新日が非表示になっていますね。
投稿日よりあとに記事を更新した場合も確認しておきましょう。
投稿日が「2019年4月1日」なので、「2019年4月4日」に記事の更新ボタンを押しました。結果は・・・
想定通り、投稿日より新しい更新日が表示されていますね。
最後に
予約投稿で更新日に投稿日より過去の日付が表示される場合の対処方法についてお話しました。
この記事で記載したソースコードをコピペすれば、すぐに解決できるので困っている人は試してみてください。
以上です。