投稿データをサイト画面に出力させるには、「メインループ」と「メインクエリ」の概念の理解が不可欠です。
メインクエリ
WordPress は、ユーザーがアクセスしたURL により、表示条件を決定し、データベースから条件に合致した記事を探し、内容を表示させる。
http://webdesign.ki-blog.biz/category/web制作/
このURLにより決められる条件 → メインクエリ
メインクエリ毎に、表示させる内容が決められている。
WordPress におけるループ処理
投稿一覧を実装させるためには、WordPress ループが必須です。
メインクエリで抽出された記事のループを、特に、メインループと言う。
ループ
同じ処理を所定の回数だけ繰り返す。
WordPress ループ
ループ処理で、決められたフォーマットで記事を出力させる。
WordPress ループは、管理画面の【表示設定】の[1ページに表示する最大投稿数]で指定された件数だけ、投稿を繰り返す。
WordPress ループの構造
WordPress ループは、if 文と while 文の組み合わせが用いられる。
基本的なWordPress ループの構造
if( have_posts() ):
if 文の条件分岐の開始。
「もし、記事が1件以上、存在したなら。」という条件分岐を意味する。
while 文 while ~ endwhile
条件に当てはまる間、処理を繰り返すという命令文。
while ( have_post() )
while 文を使ったループ処理の開始。
have_posts() を使うことで、「記事が存在する間、処理を繰り返す。」という意味になる。
have_post()
そのページの記事の有無をチェックする条件分岐のテンプレートタグ。
the_post()
ループの中で、記事1件分のデータをセットするテンプレートタグ。
実際に、記事を表示させるためには、この下に、各テンプレートタグを使う。
処理対象の記事を一つ先に進める。
while 文では、条件と比較する値が変わらないと永遠にループを繰り返すので、この the_post() により、処理対象を変更している。
endwhile;
ループの終了。
else:
if( have_posts() ) にかかる。
「もし、表示すべき記事が1件もなければ。」という意味になる。
ここから先は、記事が存在しない場合に、表示させるコンテンツを入力する。
endif;
if 文の条件分岐の終了。
ここまでが、WordPress ループとなる。
このループをトップページの index.php に書けば、決められた件数の投稿データが表示され、個別記事ページの single.php に記述すれば、該当記事が表示される。
テーマ制作において、WordPress ループは、常に意識しておかねばならない。
なぜなら、WordPress のテンプレートタグには、WordPress ループ内で使えるもの、ループ外で使えるものが、存在するので。
オススメ書籍
[amazonjs asin=”4797383097″ locale=”JP” title=”基礎からのWordPress 改訂版 (BASIC LESSON For Web Engineers)”]
[amazonjs asin=”4798140260″ locale=”JP” title=”WordPress標準デザイン講座【Version 4.x対応】”]
[amazonjs asin=”484436605X” locale=”JP” title=”現場でかならず使われているWordPressデザインのメソッドアップデート版”]