wordpressで次ページも続けて記事をナンバリングする
【こちらは前サイトからの移植記事になります。】
タイトル通り、wordpressで記事の一覧を表示する際に次ページも続けて記事をナンバリングしたい! というものです。順位ではない。
記事のナンバリング
そもそも記事を1ページ内にナンバリングして並べる場合、ループをolで挟み、ループ内の記事をliで挟みます。
1 2 3 4 5 6 7 8 9 |
<?php if ( have_posts() ) : ?> <?php while ( have_posts() ) : the_post(); ?> <ol> <!-- ループはじめ --> <li><!-- 表示する内容</li> <!-- ループ終わり --> </ol> <?php endwhile; ?> <?php endif; ?> |
先頭の数字を指定
olにstartプロパティを入れることで、どの数字から数え始めるか指定できます。
今回は、startに変数をセットすることで指定します。
どの数字を指定するかは、1ページに表示する記事数によって変わります。
現在のページ数を取得するには、グローバル変数$pagedを使います。この$paged、グローバル変数なのでもちろん関数を書く必要がありませんが注意点が一つ。1ページ目はなぜか0を返します。$pagedは0,2,3,4,5…となっていくわけです。
2ページ目以降を先に考えましょう。1番上の数字は各ページの記事数をXとした場合$paged*X-(X-1)となります。5記事ずつならば、$paged*5-4となり、10記事ならば、$paged*10-9ですね。
1ページ目は式に0を代入することとなりずれてしまうので、1ページ目だけは条件分岐して何も表示しない、デフォルトの1にする必要があります。
というわけで、上記のループの前のolは下記のようになります。※1ページあたり20記事を表示する場合。
1 |
<ol start="<?php global $paged; if($paged > 0) {echo $paged*20-19;} ?>"> |
という地味すぎるtipsでした。