WordPress 表示中の記事が公開中の一番古い記事から数えて何番目を表示

WordPress で現在表示中の記事が、公開中の一番古い記事から数えて何番目かを表示する方法を紹介します。
例えば、連載系の記事で、何番目かを自動で表示したち時に便利な方法です。

  1. WordPress 現在表示中の記事が公開中の一番古い記事から数えて何番目か表示

WordPress 現在表示中の記事が公開中の一番古い記事から数えて何番目か表示

次のコードを投稿のループ内に追加します。

<?php // WordPress 現在表示中の記事が公開中の一番古い記事から数えて何番目か表示
// 現在の記事のIDを取得
$current_post_id = get_the_ID();
// 現在の記事の投稿日時を取得
$current_post_date = get_the_time('U', $current_post_id);
// 公開中の全ての記事を取得する WP_Query
$args = array(
'post_type' => 'news', // もしくは他の投稿タイプ
'post_status' => 'publish',
'posts_per_page' => -1, // 全ての投稿を取得
'orderby' => 'date',
'order' => 'ASC' // 古い順にソート
);
$all_posts = new WP_Query( $args );
// カウンターを初期化
$counter = 1;
// サブループで全ての記事をチェック
if ( $all_posts->have_posts() ) {
while ( $all_posts->have_posts() ) {
$all_posts->the_post();
// 現在の記事と比較して、投稿日時が古いかどうかをチェック
$post_date = get_the_time('U');
if ( $post_date < $current_post_date ) {
// 古い記事の場合、カウンターをインクリメント
$counter++;
}
// 現在の記事と同じ場合はループを抜ける
if ( get_the_ID() == $current_post_id ) {
break;
}
}
}
// メモリをリセットしておく
wp_reset_postdata();
// 結果を出力
echo '現在の記事は公開中の一番古い記事から数えて ' . $counter . ' 番目です。';
?>

post_type に任意のスラッグを指定してください。

まとめ

WordPress で現在表示中の記事が、公開中の一番古い記事から数えて何番目かを表示する方法を紹介しました。