WordPressの記事更新情報などで、例えば「記事を公開してから7日間は”New”という文字(ラベル)を表示したい」というご要望があったりします。
日付を比較し表示する方法が書かれてある記事はあった記憶があるのですが、見当たらなくなってしまいました。
自分でも関数化して使い回しておりますが毎度スニペットアプリを見直したり、過去のコードを探したりする手間を省くため記事にもメモしておきます。
公開日・更新日を元に記事に「New」ラベルを表示
functions.phpに以下の関数を追加します。
デフォルト引数を指定しているので、以下のようにそのままテンプレートタグとして使用できるようにしてあります。一応記事ループ外で使用してもエラーが起きないようにしているハズですが、使うときは記事ループ内に記述してください。
<?php the_new_label(); ?>
<!-- 初期状態で出力されるHTML -->
<span class="label">New</span>
初期状態では
- ラベルのテキストは「New」
- クラス名は「label」
- 記事を公開してから7日間表示
となっています。
更新日を元にラベルを表示する例
この仕様を変更したい場合は、以下のように別の値を指定してください。更新日を元に表示する場合は第4引数に「‘modified’」を指定してください。
<?php the_new_label( 3, 'NEW!', 'label label--red', 'modified' ); ?>
<!-- 出力されるHTML -->
<span class="label label--red">NEW!</span>
この引数指定だと
- 更新日を元に3日間ラベルを表示
- クラス名は「label label–red」という複合クラス
- ラベルのテキストは「NEW!」
となります。
あまり引数を増やすのは関数設計としてはよろしくないようですが、致し方ないということで…。なるべく重要度を元に引数の順番を設定しておきました。