ワードプレスで新着が投稿されるとアイコンが表示されるようにしてみた

梅雨も明けて、毎日暑い日が続きます!
今日は朝から岐阜県の大垣に鮎料理を食べに行って、精をつけてきました。笑

 

今回は、Wordpressで記事が投稿されるとアイコンが表示される、というものです。

新着記事に「NEW!」アイコンを表示する仕組みって結構探せばあるんですけど、グローバルナビゲーションにアイコンを表示するやり方ってあんまりなくて…

PHPの知識がまだまだ乏しいところもあり、いろいろやってみたものの挫折して…と繰り返してましたが、ご教授いただきなんとかできました。
なので備忘録として残しておきます~。

 

まず、以下のソースをfunction.phpに記述します。

function custom_get_post_new_count() {

 // 対象範囲の設定
 $nowDate = strtotime( date_i18n("Y-m-d H:i:s") );
 $oldDate = date('Y-m-d H:i:s', strtotime('-3 day', $nowDate));

 // 対象となる投稿の取得

$arrArgs = array(
	'post_type'		   => 'post',
	'post_status'      => 'publish',
	'numberposts'      => -1,
	'date_query'       => array(
	array(
		'inclusive' => true,
		'after'     => $oldDate
	),
	),

	);
 $objPost = get_posts( $arrArgs );
 
 $arrNewCount = count($objPost);
 
 return $arrNewCount;

}

 

1つ1つ説明します。

まず、最初の2行です。

$nowDate = strtotime( date_i18n("Y-m-d H:i:s") );
$oldDate = date('Y-m-d H:i:s', strtotime('-3 day', $nowDate));

 

$nowDateで現在の日付を取得します。
storetimeは英文形式の日付を Unix タイムスタンプに変換するということです。

で、date_in18nはWordpressで現在の日付日時を取得する際に記載するお決まりの関数ですね。

$oldDateで「何日前まで」を取得します。
つまり、過去7日間の間に記事が更新されていれば、その記事数を表示するということ。

サンプルでは過去3日間までに、という指定にしています。

 

次、

// 対象となる投稿の取得
$arrArgs = array(
	'post_type'		   => 'post',
	'post_status'      => 'publish',
	'numberposts'      => -1,
	'date_query'       => array(
	array(
	'inclusive' => true,
	'after'     => $oldDate
	),
	),

	);

 );
 $objPost = get_posts( $arrArgs );

 

$arrArgsでpost_typeを指定します。
今回はWordpressの標準の投稿機能を使用しているので、いつもながらpostで指定。p

post_statusはデフォルト値のpublishを指定しています。

numberpostsは-1ですべての記事を、date_queryパラメータを使用して日付の期間を設定します。

incluiveはbefore / after を使った時に、指定した日をその期間内に含めるかどうかなので、今回は含めるように設定しました。

 

あとは簡単。
$objPostという関数は、$arrArgsで指定した内容をすべて取得してきますよ~という指示を出してあげるだけです。

$arrNewCount = count($objPost);

そして、好きな関数名に$arrArgsで指定した内容をすべて取得するものを、カウントします!
という指示をかいて、最後に

return $arrNewCount

関数から値を返すreturnを指示して完了!

あとは以下のソースを、アイコン等を出したいところに表示させます。

<?php $arrNewCnt = custom_get_post_new_count(); ?>
<header>
<ul>
<li>ここにメニューがずらずら書いてある…</li>
<li>新着情報<?php if ( $arrNewCnt > 0 ) { ?><span class="plus_count"><?php echo $arrNewCnt ;?></span><?php }; ></li>
<header>

これで完了です!
簡単ですよね!みなさんもぜひ試してみください~