仕事でWordPressを今使ってて、index.phpにループを使ってコンテンツをぼんぼんと吐き出しています。で、見栄え的に最後のコンテンツ出力の際に、ボックスのしたについてる線を消したい!このボックスの線を消してやりたい!そう思った時に条件分岐をしよう!ってなると思います。でもループって何を回してるんだってなったので、いいやもうぐぐろって思ったらメインループなのにwp_query使ってもっかいクエリの結果を受け取ってて、こんなんいややー!ってなったので自分で書きました。wp_query使っても良いと思います。実現できるなら手法なんてなんだって良いと思います。ただ、なんとなく僕はwp_queryがあんまり好きじゃないので、このindex.phpについてくるループのまんま何とかする方法ないかなって考えただけです。
INDEX
メインループってなぁに
各テンプレートについてるループだと思ってたらURLに対して1つついてるループだそうです。
じゃあループってなぁに
WordPressに限って言えば、設定された投稿数分、または投稿があるだけ、the_postを使って次の投稿を取得し続けていきます。これにより、ループ内の関数を使う事が出来ます。多分クエリは1回しかリクエストしなくて、その1回したリクエストの結果は$postsに入ってるんじゃないかなーって思ってます。
ループの最後を取得するとはどういうことか
とりあえずループ内でお前が最後のIDじゃー!って決め付けようが無いので、データベースの問い合わせ結果が入っていると思われる$posts配列を参照します。この配列最後のオブジェクトのIDプロパティに入ってるのがループ内で使う最後のIDなので、こいつを最後って事にしてプログラムを組んでいきます。
ループの最後を取得するプログラムの流れ
・$posts配列から最後の配列を取得
・取得結果をループ内で比較
・一致したらそこが最後のループである
コード
そうするとこういうコードになっていくと思われますが、もっと上手に書きたい人はもっと上手に書いて下さい。