WordPressの新着記事に何件かNEWマークを付けたいけど出来る?
例えば以下のようなケースが考えられます。
- 記事を公開してから1週間だけ『NEW』マークを付けたい
- 最新記事3件だけ『NEW』マークを付けたい
- 記事を公開してから1週間以内の最新記事3件だけ『NEW』マークを付けたい
今回はこれらをコピペで出来るように5つのケースに合わせてコードをご紹介しています。
完全無料のプログラミングスクール『ZeroPlus Gate』
30日間でWeb制作を学べる無料のプログラミングスクールがこちら
いきなり数十万するプログラミングスクールは厳しい・・・という人のお試しに最適です。
現在は無料ですがいつ有料になるか分からないので、気になる方はお早めに👇
(有料になっていたらすいません🙇♂️)
(有料になっていたらすいません🙇♂️)
WordPressの新着記事にNEWマークを表示させる方法【件数・期間を指定】
今回ご紹介するのは以下の5種類になります。
- 件数で指定する方法(通常投稿)
- 件数で指定する方法(カスタム投稿)
- 期間で指定する方法(日数か時間)
- 件数と期間で指定する方法(通常投稿)
- 件数と期間で指定する方法(カスタム投稿)
今回の設定はこちらです。
- 期間:7日間
- 件数:3件
- 件数と期間:3件かつ7日間
- カスタム投稿タイプスラッグ:news(カスタム投稿の場合)
カスタム投稿タイプスラッグですが、これはプラグイン『Custom Post Type UI』を使った場合『CPT UI → 投稿タイプの追加と編集 → 投稿タイプを編集 → 投稿タイプを選択 → 投稿タイプスラッグ』で確認できます。
今回ご紹介するコードを書く場所は記事のループ内の表示させたい箇所になります。
また今回出力されるHTMLは全てこちらにします。
<span class="new">NEW</span>
件数で指定する方法(通常投稿)
<!-- 件数で指定(通常投稿) -->
<?php
$last_post_ids = array();
$lastposts = get_posts('posts_per_page=3'); // NEWを付ける最新記事の件数
foreach($lastposts as $lastpost) {
$last_post_ids[] = $lastpost->ID;
}
?>
<?php if ( in_array( $post->ID, $last_post_ids ) ) : ?>
<span class="new">NEW</span>
<?php endif; ?>
件数で指定する方法(カスタム投稿)
<!-- 件数で指定(カスタム投稿) -->
<?php
$last_post_ids = array();
$lastposts = get_posts('post_type=news&posts_per_page=3'); // 『news』はカスタム投稿タイプスラッグ
foreach($lastposts as $lastpost) {
$last_post_ids[] = $lastpost->ID;
}
?>
<?php if ( in_array( $post->ID, $last_post_ids ) ) : ?>
<span class="new">NEW</span>
<?php endif; ?>
期間を指定する方法(日数か時間)
<?php
$days = 7; // NEWを付ける最新記事の期間(日数)
$today = date_i18n('U'); // 現在の時間
$entry = get_the_time('U'); // 投稿日の時間
$term = date('U',($today - $entry)) / 86400;
if( $days > $term ){
echo '<span class="new">NEW</span>';
}
?>
上記は『日数』で指定する方法ですが、5行目の『86400』を『3600』にすると『時間』で指定となります。
上記で『86400』を『3600』にした場合は『7時間』となります。
件数と期間で指定する方法(通常投稿)
<!-- 件数&期間(通常投稿) -->
<?php
$last_post_ids = array();
$lastposts = get_posts('posts_per_page=3'); // NEWを付ける最新記事の件数
foreach($lastposts as $lastpost) {
$last_post_ids[] = $lastpost->ID;
}
?>
<?php
$days = 7; // NEWを付ける最新記事の期間(日数)
$today = date_i18n('U');
$entry = get_the_time('U');
$term = date('U',($today - $entry)) / 86400 ;
if( $days > $term ){
?>
<?php if ( in_array( $post->ID, $last_post_ids ) ) : ?>
<span class="new">NEW</span>
<?php endif; ?>
<?php
}
?>
件数と期間で指定する方法(カスタム投稿)
<!-- 件数&期間(カスタム投稿) -->
<?php
$last_post_ids = array();
$lastposts = get_posts('post_type=news&posts_per_page=3'); // 『news』はカスタム投稿タイプスラッグ
foreach($lastposts as $lastpost) {
$last_post_ids[] = $lastpost->ID;
}
?>
<?php
$days = 7; // NEWマークを表示する期間(日数)
$today = date_i18n('U');
$entry = get_the_time('U');
$term = date('U',($today - $entry)) / 86400 ;
if( $days > $term ){
?>
<?php if ( in_array( $post->ID, $last_post_ids ) ) : ?>
<span class="new">NEW</span>
<?php endif; ?>
<?php
}
?>
以上になります。
この記事が役に立ったと思ったら、シェアボタンからX(旧Twitter)などにシェアすると、いいねされてフォロワーが増えたりすることがあるよ!