投稿日と最終更新日の表示
Affingerで投稿日と最終更新日を表示する
メニューのAffinger5管理→投稿・固定記事設定のこの項目で設定します。
投稿日と最終更新日が異なるときのみ表示される
投稿日と最終更新日が同じ場合は投稿日のみの表示ですが、最終更新日が投稿日と異なる場合、こんな風に並んで表示されます。
・・・なにか違和感感じませんか?そう、最終更新日が投稿日よりも古い場合も表示されてしまうのです。
普通は最終更新日が投稿日より古くなることなんてないと思うのですが、WordPressで予約投稿を使うとこういうことが起こります。
予約投稿ボタンをぽちっと押した日が「最終更新日」で、実際に投稿された日が「投稿日」。WordPress的にはそういう解釈なのです。そりゃ言われてみればそうなんですけど。
でもこんな表示意味ないですよね。というか、見る側は意味わからないですよね。
なので最終更新日が投稿日より古い場合は投稿日のみ表示するように変更したいと思います。
最終更新日の方が古い場合は投稿日のみ表示する
手順1.親テーマのitiran-date-singular.phpを子テーマのフォルダにコピーする
親テーマの直接編集でも実現可能ですが、基本的に親テーマはいじらないほうがいいです。
FTPソフトなど使用して <サイトURL>/wp-content/themes/affinger5にあるitiran-date-singular.phpを<サイトURL>/wp-content/themes/affinger5-childにコピペします。
※後で説明してますが、トップページの記事一覧の方も買えたければitiran-date-tag.phpもここでコピペしといてください。
手順2.子テーマ側のitiran-date-singular.phpを編集する
WordPressメニューの外観→テーマエディターで「編集するテーマを選択」の部分をAffinger5-childにして「選択」、一覧からitiran-date-singular.phpを選びます。
よくわからなくても大丈夫。この行を見つけて
if ( ! $show_published_date && trim ( $updatewidgetset ) === '' && ( get_the_date() != get_the_modified_date() ) ) : //更新がある場合 ?>
こう書き換えるだけです。
if ( ! $show_published_date && trim ( $updatewidgetset ) === '' && ( get_the_date('Ymd') < get_the_modified_date('Ymd') ) ) : //投稿日より新しい更新がある場合 ?>
両方表示するための条件式が、もとは「投稿日と最終更新日が異なる場合」だったところを「投稿日が最終更新日よりも古い場合」に変更しただけですね。
これでファイルを更新すれば投稿記事画面には古い最終更新日が表示されなくなります。
(どうでもいいけど、phpって文字列をそのまま数字として比較できるんですね。静的型付け言語に慣れてると不思議な感じがします。。。)
一覧表示も同じように
上記設定の場合、一覧表示では更新日だけが表示されます。投稿日より古かろうと新しかろうと問答無用で最終更新日が表示されるのです。嫌ですよね。
ここでも「投稿日より古い最終更新日は表示しない」設定にしたいと思います。やり方は投稿記事のときとほぼ同じです。編集するファイルが違うだけ。
手順1.親テーマのitiran-date-tag.phpを子テーマのフォルダにコピーする
<サイトURL>/wp-content/themes/affinger5にあるitiran-date-tag.phpを<サイトURL>/wp-content/themes/affinger5-childにコピペします。
今度は~tagの方です。さっきまとめてコピペした人はそのまま手順2の編集へどうぞ。
手順2.子テーマ側のitiran-date-tag.phpを編集する
さっきと全く同じです。この行を見つけて
if ( ! $show_published_date && trim ( $updatewidgetset ) === '' && ( get_the_date() != get_the_modified_date() ) ) : //更新がある場合 ?>
こう書き換えるだけ。
if ( ! $show_published_date && trim ( $updatewidgetset ) === '' && ( get_the_date('Ymd') < get_the_modified_date('Ymd') ) ) : //投稿日より新しい更新がある場合 ?>
以上です。
これで投稿日より古い最終更新日は表に出なくなりました。すっきり。