今の記事は何番目? WordPressの記事に連番を出力する方法

スポンサーリンク

どうも、イソップです。

WordPressで、記事を出力する際に連番をつけるにはどうするか。
やりたいことは次の2つの方法です。

  • 記事一覧を出力するループで、それぞれ連番を付けたい
  • 記事の詳細ページで、頭から数えて何投稿目かを出力したい

どちらも functions.php にコードを追記する方法を紹介します。

記事のループ内で連番を出力する

ループ内で連番を出力するには、まず functions.php に以下のコードを追記します。

<?php
// ループ回数を取得
function get_loop_number(){
    global $wp_query;
    return $wp_query->current_post + 1;
}

出力する際は、ループの中で次のように書きます。

<php? echo get_loop_number(); ?> // => 1〜

記事の詳細ページで、投稿のいくつ目かを出力する

記事がいくつめかを出力する

記事の詳細ページで投稿のいくつ目かを出力するには、
データベースから投稿タイプの指定をしてカウントを取得します。

functions.php に次のコードを追記します。

<?php
// 現在の記事は何記事目かを取得
function get_post_number( $post_type = 'post', $op = '<=' ) {
    global $wpdb, $post;
    $post_type = is_array($post_type) ? implode("','", $post_type) : $post_type;
    $number = $wpdb->get_var("
        SELECT COUNT( * )
        FROM $wpdb->posts
        WHERE post_date {$op} '{$post->post_date}'
        AND post_status = 'publish'
        AND post_type = ('{$post_type}')
    ");
    return $number;
}

出力する際は、single.php の中で次のように書きます。

<?php echo get_post_number(); ?> // => 6

上記のコードでは投稿タイプが post になりますが、
get_post_number() に投稿タイプを指定すれば、カスタム投稿でのカウントを取得できます。

<?php echo get_post_number('products'); ?> // => 1 (カスタム投稿タイプ「products」から取得する)

以上です。
functions.php にテンプレとして2つのコードを書いておくと、どのプロジェクトでも使いまわせるのでオススメです。

スポンサーリンク