ごきげんよう。
綾崎です。
WordPressで記事の一覧、アーカイブで新着の記事にアイコンをつけるの、本サイトでもトップページとブログ記事の一覧で行なっています。
PHPの記述は、コピペで実装できると思うので、よかったら参考にしてください。
今回は、PHPの記述と、私が本サイトで当てているスタイルをご紹介します。
$days = 7;
$now = date_i18n('U');
$entry = get_the_time('U');
$term = date('U',($now - $entry)) / 86400;
if( $days > $term ){
echo 'NEW';
}
$daysが、NEWを表示させたい期間の日数です。
私は7日、1週間にしています。
$nowが現在の日時、$entryが記事の投稿の日時を取得しています。
$termは、(今日の日時 – 投稿した日時)÷1日の秒数 です。
1日の秒数ってのは、1日=60秒×60分×24時間=86400秒 です。
そして、この$termが$daysよりも大きい場合のみ「New」を表示させる、ということです。
日数を変更したい場合は、$daysの数字を編集してください。
もしこれを時間単位に場合は、例えばこんな感じでしょうか。
$hours = 5;
$now = date_i18n('U');
$entry = get_the_time('U');
$term = date('U',($now - $entry)) / 3600;
if( $hours > $term ){
echo 'NEW';
}
上記は、5時間だけ「New」がつきます。
3600は、1時間の秒数です。
そして、if文の中のechoに、出力したいhtmlを記述します。
トップページ(https://tomoeayasaki.net)での「NEW」の表示です。
ギャラリーの新規投稿と、ブログの新規投稿につくようになっています。
下記のHTMLは、ギャラリーの方です。
「NEW」の表示自体は、同じスタイルが当たっていて、要素の右上に表示されるようになっています。
<ul>
<li>
<span class="new">NEW</span>
<a href="#">
<div class="img-space"><img src="" alt=""></div>
</a>
</li>
</ul>
<span class=”new”>NEW</span>が、上記で紹介したPHPのechoで出力しているHTMLです。
liを、ループで回しています。
li {
position: relative;
}
li .new {
font-size: 12px;
color: #e91e50;
position: absolute;
top: -17px;
right: 0;
}
positionでtop: -17px;を指定することで、枠の外に飛び出させています。
記事一覧ページ(https://tomoeayasaki.net/blog)の「New」の表示です。
サムネイルの左上に、三角のマークがつくようになっています。
<div class="pbox-index">
<a href="#">
<div class="date"><time datetime="20xx-01-01">20xx/01/01</time></div>
<div class="pbox-thumb">
<span class="new">NEW</span>
<div class="imgSpace" style="background-image: url('')"></div>
<span class="category">(カテゴリー)</span>
</div>
<div class="pbox-text">
<h2>(タイトル)</h2>
<p>(本文抜粋)</p>
</div>
</a>
</div>
pbox-index が、ループ回して出力している部分です。
.pbox-index .pbox-thumb {
position: relative;
}
.pbox-index .new {
position: absolute;
top: -5px;
left: -5px;
padding-top: 7px;
transform: rotate(-45deg);
color: #fff;
font-size: 14px;
letter-spacing: 2px;
}
.pbox-index .new::before {
content: "";
border-top: 40px solid #e91e50;
border-right: 40px solid transparent;
border-bottom: 40px solid transparent;
border-left: 40px solid #e91e50;
position: absolute;
top: 0;
left: -24px;
transform: rotate(45deg);
z-index: -1;
}
サムネイルを囲うdivの中に、NEWのspanタグを入れて、positionで配置しています。
スタイル自体は、NEWのテキストのspanのbeforeで三角形を作り、transformで回転させています。