第7話

予約投稿したときに投稿日よりも古い更新日が表示される問題の解決法

こんにちは!Takuya.B(@TB_IQ)です。

WordPressで記事を予約投稿した後に編集作業をすると、投稿日より更新日の方が古いという問題が生じました。

これはWordpressのデフォルトテーマや有料テーマを使用している人は遭遇しない問題です。

ただ、自分で作ったテーマを使っている人は遭遇しやすいものだと思いますので、この問題の解決法をご紹介しておきます。

スポンサーリンク

予約投稿をした後に編集すると『投稿日より更新日の方が古い』問題

今回、私が遭遇した問題は以下の画像のようなものです。

このように投稿日よりも更新日の方が古く表示されてしまう問題です。

この問題を見つけたのは昨日今日の話ではなかったのですが、投稿した後に更新して更新日を登校日より新しくして見て見ぬふりをしていました。

しかし、何も更新されていないのに更新日が存在するのはおかしいです。読者の方からすれば「どこが変わったの?」というモヤモヤしてしまうかもしれません。

これは問題です。

問題のコードと解決策

わたしと同じ問題が発生している方は更新日を記述している箇所のコードが以下のようになっているはずです。

<?php if( get_the_date() != get_the_modified_date()): ?>
                        <time>
                            <i class="fa fa-repeat"></i>
                            <?php echo get_the_modified_date() ?>
                        </time>
                        <?php endif; ?>

1行目のif文が問題です。

これでは『投稿日と更新日が異なっていれば更新日を表示する』わけですから、投稿日より更新日が古くても更新日が表示されてしまいます。

解決策

そこで上のコードの1行目のif文を次のように書き換えます。

<?php if( get_the_date('Ymd') < get_the_modified_date('Ymd')): ?>

説明します。

このget_the_date()/get_the_modified_date()というテンプレートタグの出力形式は任意に変更することができます。例えば、get_the_date('Y-m-d')とすれば投稿日が『2017-10-08』を表しますし、get_the_modified_date('Y年m月d日')とすれば更新日が『2017年10月8日』を表していることになります。

つまり、この表示形式を('Ymd')とすると『20171008』という単純な数値を表すことになるので、大きいor小さいという比較ができるわけです。

このように無事解決できました

スポンサーリンク

まとめ

オリジナルテーマの作り方もネット上を探せばすぐに情報は見つかります。

公開されているコードを丸々コピペでも問題なく使えるんですが、このような問題も生じることもあるので、理解が進んできたらコードの書き方を自分なりに考えてみるのもよいかもしれませんね。