ワードプレスでブログを作っていて、なかなか理解できないことがあった。
それがWordPressループの構造とその意味だ。
これがワードプレスを
「わかりにくいんだよ、ばかやろう!!」
って思う大きな原因だ。(プログラミング小僧だけなのかもしれないがそれほど理解しにくかったのだから暴言を許してほしい。)
WordPressループの構造は以下の通りだ。
1 2 3 4 5 6 7 8 9 10 11 | <?php if (have_posts() ) : while(have_posts()): the_post(); ?> 繰り返し表示する内容 <?php endwhile ; else: 投稿がない時に表示する内容 endif ; ?> |
ifの構文の中にwhile構文が入っている上に、更にPHPのコードが組み込まれているのでわかりにくいことこの上ない。
ちなみにhave_posts()は記事があるかどうかを判断するものだ。
つまり、if(have_posts()):~の意味としては、
「もし記事があれば~のことを実行せよ」って感じ。
で、記事がある場合に実行するのが
while(have_posts()): the_post();
繰り返す表示する内容
ってことだ。
while~endwhileは ~ を条件を満たすまで繰り返すためのもの。
つまり、
while(have_posts()): the_post();
繰り返す表示する内容
の意味としては、
「記事があれば、表示する内容(the_title()とかが多いね。記事のタイトルを表示せよ的な)を条件を満たすまで繰り返し表示せよ。」
って感じ。
ちなみにthe_post()がすげぇわかりにくいんだけど、条件を満たすためのカウントを数えているって考えるとわかりやすいって最近気づいた。
よくPHPで
1 2 3 4 | while($i<10){ echo $i $i++; } |
【意味】
⇨$iが10になるまで、$iを表示せよ。1度表示すると$iに1を追加する
というコードがあるけど、このカウントアップと同じイメージ。
試しにthe_post()を除いて、このWordPressループを表示してみたら、ループが終わらず強制終了するしかなかった(笑)
つまり、while構文の条件を満たすためにthe_post()が使われているらしい。
なので、the_post()はそんなイメージで理解している。
んで、最終的にこのWordPressループの意味としては
1 2 3 4 5 6 7 8 9 10 11 | <?php if (have_posts() ) : while(have_posts()): the_post(); ?> 繰り返し表示する内容 <?php endwhile ; else: 投稿がない時に表示する内容 endif ; ?> |
⇨
「もし記事があれば、条件を満たすまで、内容を繰り返し表示せよ。もし記事がなければ、何もしない」
って感じだね。
the_post()が何のためにあるのかがわかってしまえば、多少理解しやすくなるわ。