ホームページ制作アトリエ

心えがおホームページ制作 atelier(アトリエ)は、ホームページ・動画制作、教育ICT・アプリ開発、名刺・ポスター・チラシの作成を行っております。

サブループの仕組み

カテゴリー:Wordpress
query_postsは、ループに条件をつけて様々なループを作ることが出来ます。

query_posts

…Wordpressループの対象を条件により絞り込みます。 saburu-puCodexより)

ここで落とし穴!query_postsはメインループにしか使えません!

ループの中にループを作る(サブループ/複数のループ)を作るには、Wordpressオブジェクトを作成する必要があります。
サブループ用オブジェクトの作成
↓丸暗記しましょう! パラメータに与える配列によってWordpressオブジェクトの内容が変化します。
今回は同じカテゴリーの記事を出力することにしました。
以下のようなコードになります。 WP_Queryのパラメータは沢山あるので、詳しくはCodexを参照してください。
↑の2行目ではPHP構文「多次元配列」を使っています。
$args = array(‘post__not_in’ => array($post -> ID)
これで、「現在表示されている記事を除く」「特定のカテゴリー」「3件の表示」「ランダムで」という条件がつきました。
get_the_category と array_push と foreach文
ではここから$my_queryを使ってサブループを作っていくわけですが、その前に「特定のカテゴリー」にget_the_categoryを使い、現在表示されている記事のカテゴリー詳細を配列として代入しなければいけません。 さらには、複数のカテゴリーをもつ記事が存在する場合も考えなくてはいけません!foreach文」を使い、カテゴリーIDだけの新しい配列を作ってみましょう。 4行目のarray_pushは、配列の一番最後に要素を追加してくれるPHP関数です。
2行目に作ってある空の配列$category_IDに追加していってくれます。
サブループの記述
ここでいよいよサブループの記述です。まずは骨組みをつくります。 操作の対象が先ほど作成した$my_queryになっていますね。
こんな感じで、サブループを作る時にはメインループとは別の操作対象を用意しておく必要があります。

お約束事

一番最後に wp_reset_postdata を記述し、リセットをしておきましょう。