WordPressで記事一覧を表示した際、新着投稿に「New」マークをつけたい時があると思います。だいたい3日間、5日間、一週間くらいがよくあるパターンかなと思いますので、その設定方法も合わせて、書いてみたいと思います。
Newマークをつける命令
Newマークを付ける命令は、下記になります。
<?php $days = 1; // NEWマークを表示する期間(日もしくは時間) $now = date_i18n('U'); // 今の時間 $entry = get_the_time('U'); // 投稿日の時間 $term = date('U',($now - $entry)) / 86400; // 経過日数の判定(時間なら3600) if( $days > $term ){ echo '<span class="newicon">NEW!</span>'; } ?>
下記で日にちの設定をします。この場合1日です。
$days = 1; // NEWマークを表示する期間(日もしくは時間)
3日間Newマークを表示したい場合
<?php $days = 3; // NEWマークを表示する期間(日もしくは時間) $now = date_i18n('U'); // 今の時間 $entry = get_the_time('U'); // 投稿日の時間 $term = date('U',($now - $entry)) / 86400; // 経過日数の判定(時間なら3600) if( $days > $term ){ echo '<span class="newicon">NEW!</span>'; } ?>
5日間Newマークを表示したい場合
<?php $days = 5; // NEWマークを表示する期間(日もしくは時間) $now = date_i18n('U'); // 今の時間 $entry = get_the_time('U'); // 投稿日の時間 $term = date('U',($now - $entry)) / 86400; // 経過日数の判定(時間なら3600) if( $days > $term ){ echo '<span class="newicon">NEW!</span>'; } ?>
一週間Newマークを表示したい場合
<?php $days = 7; // NEWマークを表示する期間(日もしくは時間) $now = date_i18n('U'); // 今の時間 $entry = get_the_time('U'); // 投稿日の時間 $term = date('U',($now - $entry)) / 86400; // 経過日数の判定(時間なら3600) if( $days > $term ){ echo '<span class="newicon">NEW!</span>'; } ?>
5時間くらいだけNewマークをつけたい場合
あまりないとは思いますが、ほんのちょっとだけNewマークをつけたい場合の話で、5時間だけの時
<?php $days = 5; // NEWマークを表示する期間(日もしくは時間) $now = date_i18n('U'); // 今の時間 $entry = get_the_time('U'); // 投稿日の時間 $term = date('U',($now - $entry)) / 3600; // 経過日数の判定(時間なら3600) if( $days > $term ){ echo '<span class="newicon">NEW!</span>'; } ?>
この部分を86400→3600にします。
$term = date('U',($now - $entry)) / 3600; // 経過日数の判定(時間なら3600)
ちなみに86400というのは、秒数のことです。
1時間は3600秒で、1日は86400秒です。
3600秒設定にすれば、下記は1時間単位となります。なので、1なら1時間。5なら5時間です。
$days = 1; // NEWマークを表示する期間(日もしくは時間)
【STINGER8】にNewマークをつけたい
【STINGER8】の場合、itiran.phpにループがあるので、入れてみます。
29行目あたりに
<?php the_time( 'Y/m/d' ); ?>
がありますので、日付の後ろに入れてみます。
日にちは5日間。
<div class="blog_info"> <p><i class="fa fa-clock-o"></i> <?php the_time( 'Y/m/d' ); ?> <?php $days = 5; // NEWマークを表示する期間(日もしくは時間) $now = date_i18n('U'); // 今の時間 $entry = get_the_time('U'); // 投稿日の時間 $term = date('U',($now - $entry)) / 86400; // 経過日数の判定(時間なら3600) if( $days > $term ){ echo '<span class="newicon">NEW!</span>'; } ?> <span class="pcone"> <i class="fa fa-folder-open-o" aria-hidden="true"></i>-<?php the_category( ', ' ) ?><br/> <?php the_tags( '<i class="fa fa-tags"></i> ', ', ' ); ?> </span></p>
CSSは、newiconにしています。
<span class="newicon">NEW!</span>
こちらは赤字にしてみます。
.newicon{color:#ff0000;}
これを【STINGER8】のstyle.CSSに入れます。子テーマを設定しているなら、そちらにいれてアップしておきます。
【STINGER8】を確認してみます。下記のように表示されていればOKです。
ちなみにitiran.phpの一番上に「トップやアーカイブ一覧」と書いてあります。
<?php /** * トップやアーカイブ一覧 */ ?>
なので、アーカイブを確認してみますと、こちらにもNewマークがついていると思います。
【OnePress】にNewマークをつけたい
過去の記事で【最新ニュースの修正】をしている記事があります。
WordPressテーマ【OnePress】の使い方!パララックス効果の設定方法やカスタマイズ【最新ニュースの修正】
要領は【STINGER8】と同じです。
上記の記事で日付を入れる仕方を書いていますので、/template-parts/content-list.phpを開いて、
<?php the_time('Y年n月j日'); ?>
の後ろに入れれば同じように行けると思います。
<div class="list-article-content"> <?php the_time('Y年n月j日'); ?> <?php $days = 5; // NEWマークを表示する期間(日もしくは時間) $now = date_i18n('U'); // 今の時間 $entry = get_the_time('U'); // 投稿日の時間 $term = date('U',($now - $entry)) / 86400; // 経過日数の判定(時間なら3600) if( $days > $term ){ echo '<span class="newicon">NEW!</span>'; } ?> <div class="list-article-meta"> <?php the_category(' / '); ?> </div>
サイトを確認してみます。下記のようになっていればOKです。
コメントをどうぞ