WordPress

【コピペOK!】WordPressの新着記事にNEWマークを表示させる方法【件数・期間を指定】

2022年10月12日

※ 当サイトではアフィリエイト広告を利用しています

WordPressの新着記事に何件かNEWマークを付けたいけど出来る?

例えば以下のようなケースが考えられます。

  • 記事を公開してから1週間だけ『NEW』マークを付けたい
  • 最新記事3件だけ『NEW』マークを付けたい
  • 記事を公開してから1週間以内の最新記事3件だけ『NEW』マークを付けたい

今回はこれらをコピペで出来るように5つのケースに合わせてコードをご紹介しています。

じゅんぺいブログは、Web制作コーディングWordPress制作)の技術記事を中心に、約500記事公開しています。ぜひ他の記事も参考にしてみてください!
完全無料のプログラミングスクール『ZeroPlus Gate』
30日間でWeb制作を学べる無料のプログラミングスクールがこちら
いきなり数十万するプログラミングスクールは厳しい・・・という人のお試しに最適です。
現在は無料ですがいつ有料になるか分からないので、気になる方はお早めに👇
(有料になっていたらすいません🙇‍♂️)

\ 完全無料 /

ZeroPlus Gate公式サイト

毎日先着制!

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)などにシェアすると、いいねされてフォロワーが増えたりすることがあるよ!
  • この記事を書いた人

じゅんぺい

37歳からWeb制作とブログ開始。Web制作歴5年目でコーディングとWordPressオリジナルテーマ制作が中心。これまで120件以上を納品。当ブログ月間最高15万PVで、370記事以上はWeb制作の技術記事。コンテンツ販売→累計売上1200万円&1500部超え。X(旧Twitter)フォロワー7200人以上。2024年3月からブログの経験を活かしてライターとしても活動を開始。

-WordPress