WordPressの記事ループの中で、ループした回数を取得する
Wordpressの記事ループの中で、最初や最後の記事とかを判別する - kanonjiの日記 で質問を頂きました。
どうやらコメントでは、はてな記法が使えないようなので折角なので記事として書きます。
環境
Wordpressの記事ループの中で、最初や最後の記事とかを判別する - kanonjiの日記 と同様に WordPress 2.9.1。
まぁ、あんまり古くないバージョンなら動くと思います。
WordPress 3.0 が出てる様ですが、まだ3.0系は使ってないので動くか分かりません。
global $wp_query に WP_Query が代入されてて、WP_Query の構造が変わってなければ動くと思いますが。
コード
<?php function getLoopIndex(){ global $wp_query; return $wp_query->current_post; } function getLoopCount(){ global $wp_query; return $wp_query->current_post+1; }
Wordpressでは、テンプレートで while(have_post()) でループして、記事を取得し表示します。
テンプレートと言っても、html に素の php を書いてるだけの仕組みなので、テンプレートでちょこっとphpコードを書けば済むんですが、やっぱりファンクションにまとまってるほうがきれいなので、関数化します。
getLoopIndex() | 最初の記事を0として数えます。 |
getLoopCount() | 最初の記事を1として数えます。 |
プログラマーとしては0から数える方が馴染み深いと言う事で getLoopIndex() を作ったけど、0から数えるのに違和感がある人は getLoopCount() をどうぞ。
やってることは、見ての通りたいした事じゃないです。
ちなみに、元から WordPress に備わっているテンプレートタグに the_ID() があるけど、これはデータベースにある記事Id。
記事毎に違う Id が割り当てられてるので、html Document内で重複しない id として使えるけど、連番にはならないのでちょっと違います。
なお、導入はお使いのテーマの functions.php がお勧めです。
ループ中に使用出来るとか、導入の詳細は Wordpressの記事ループの中で、最初や最後の記事とかを判別する - kanonjiの日記 の中ほどの「注意とか」を見てください。