予約投稿で更新日が公開日より前の場合は更新日を非表示にする方法

そのサイトの情報が新しいものなのか古いものなのか。
また、こまめにメンテナンスされているのかいないのか。

ユーザー目線から言えば記事の公開日と更新日は大切な情報です。
記事を書く側もそれらの日付は大切にしたいものです。


予約投稿


毎日定時にブログをアップしたい人や、
調子が良くて記事を書きためたけど、公開はゆっくりやっていきたい人。

理由は様々ですがWordPressの予約機能にて投稿日をあらかじめ予約している人は多いのではないのでしょうか。

予約投稿は便利な機能ですが、一つ厄介な点が。

それは、WordPressのテーマによっては
予約投稿すると公開日より更新日が前の日付になってしまうのです。

公開日は公開した日。
更新日は最後にその記事に手を加えた日。
なので更新日が前になることは当然と言えば当然なのですが。

しかし更新日が前だとなんがか変な感じですよね。

かといって予約投稿するたびに、公開後に手動で再更新するのも面倒。

基本は公開日を表示して、
公開日以降に更新した場合のみ更新日を表示するようにしたいものです。



カスタマイズしよう!


投稿記事について、公開日以降に更新した場合のみ更新日を表示するようにしたいと思います。

今回は、
WordPressのテーマ、STINGER8でのカスタマイズ例です。

それ以外のテーマの方は、コードを参考に各自臨機応変にお願いします。


おおまかな手順
1.デフォルトの更新日を非表示にする
2.functions.phpの編集
3.single.phpの編集

基本的には、子テーマで作業することをおすすめします。


1.デフォルトの更新日を非表示にする


まずはデフォルトの更新日を非表示にしたいと思います。
該当のコードを削除してもいいのですが、あとで元にも戻せるように、コメントアウトで対応したいと思います。

手順はこちら。
STINGER8 更新日を非表示にする


2.functions.phpの編集


WordPressの「外観」→「テーマの編集」にて、
functions.phpを開き、空いているところに以下のコードをコピペします。

/*
  get_the_modified_time()の結果がget_the_time()より古い場合はget_the_time()を返す。
  同じ場合はnullをかえす。
  それ以外はget_the_modified_time()をかえす。
*/

function get_mtime($format) {
    $mtime = get_the_modified_time('Ymd');
    $ptime = get_the_time('Ymd');
    if ($ptime > $mtime) {
        return get_the_time($format);
    } elseif ($ptime === $mtime) {
        return null;
    } else {
        return get_the_modified_time($format);
    }
}



3.single.phpの編集


続いて、single.phpを編集します。

手順1で更新日を非表示にしたと思います。
その同じところに以下をコピペします。

<?php if ($mtime = get_mtime('Y-m-d')) echo '更新日: ', $mtime; ?>

こうすると、更新日が例えば2017-04-16のように西暦・月・日がハイフンで区切られ表示されます。



以上で作業完了です。



【引用・参考サイト】
・『WP SEO ブログ』(http://www.seotemplate.biz/blog/wordpress-tips/4019/)2017年4月14日検索