web関連

【wordpress】wordpressの更新日数を表示する方法

2020/10/03

wordpressで記事の数じゃなくて更新日数を取得したかったときの備忘録

wordpressで記事の更新日数の取得方法

作ってみたけど、更新日数が合っているかどうかの検証はしてない

$arg = array(
    'post_type' => array('diary','study','manga','web'),
    'posts_per_page' => -1
);
$the_query = get_posts($arg);
$count = [];// カウント用の配列
foreach($the_query as $post): setup_postdata($post);

// 同じ日付の記事はスキップ
if(end($count) == get_the_date('Y/n/j')){
    continue;
}
// 配列の末尾に追加
array_push($count,get_the_date('Y/n/j'));

endforeach;
wp_reset_postdata();

echo '更新日数は' . count($count) . '日';

ループが回るたびに配列に日付を入れていき、end()を使って配列の末尾(前のループの日付の値)と比較し同じ値だったら「同じ日付の記事だから配列に追加せんとこ」ってスキップする処理

本当だったら、「WP_Query」や「get_posts」に指定するパラメーター側で同じ日付の時は1件のみ取得とかできないかな?って思ったんだけどよくわからなかった

パラメーター側で絞れるのであれば

$arg = array(
	//同日の記事は1件のみ取得用のパラメーター
);
$the_query  = get_posts($arg);
echo '更新数は'. count($the_query) .'です。';

って感じで取得しようと思ったんだけどなぁ
いちいち展開する必要がないからこっちのほうが楽だよね、できるなら…

アクセスのたびこの処理をするのも面倒だし前回使った「Transients API」を使ってキャッシュ保存しとこうかなぁ
備忘録がアップされるたびに取得しなおす処理は必要だけど…

おまけとメモ

同日の日付が出力されないthe_date()を使った備忘録

the_date()って同じ日付の記事があったら出力がされないって関数なんだけど、これをうまく使えば更新日数を取得できるんじゃないかって考えた

で、実際に使ってみて、この関数はあくまで同日の日付のみを省略する関数なんで日付以外は表示されちゃうので更新日数を取得することには使えなかった

一応メモ

記事数を取得するだけならwp_count_posts()でもできる

個人的にwp_count_posts()って関数があるの知らなかったのでメモ

【投稿タイプが一つの時】

echo '公開記事数は' . wp_count_posts('post')->publish . '件';

【投稿タイプが複数の時】

$post_types = array('post','diary','study','manga','web');
foreach ( $post_types as $post_type ) {
  $all_post_count += wp_count_posts( $post_type )->publish;
}
echo 'これらの投稿タイプの公開記事数は' . $all_post_count . '件';

foreachでループさせて一つずつ公開記事数を取得して足してるだけ

終わり

余談だけど
「get_posts()のリセットはwp_reset_postdata()」
「WP_Query()もwp_reset_postdata()」

「query_posts()はwp_reset_query()」
たまにごっちゃになるのでメモ、おぼえようね