Jump to the content

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

WordPress

    今の記事は何番目? 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つのコードを書いておくと、どのプロジェクトでも使いまわせるのでオススメです。

    注目記事

    最近の記事

    ぼくが書いてます

    フロントエンドエンジニア

    イソップ

    ページの先頭に戻る

    Search results

    ×