補足1 で、表示したいパーツが問題なく表示できることを確認しました。
このままメインループで作れるのかどうか?
前回、実績一覧のメインループは「新しいものから新着X件を表示」であると説明しましたが、これをモニョモニョと作り変えて「制作実績のカテゴリごとに3件表示」ということができるかどうか、ですが、できません。
いや、できるかもしれないのですが、少なくとも方法が思いつきませんでした。
なので、あっさり諦めて、サブループを作ります。
ある制作実績カテゴリの制作実績を最新3件表示してみる
本編では大幅に端折っている部分について、ちょびっと詳細に書いてみます。
まず、サブループの書き方です。今回はget_posts()関数を使います。
実際は下記のように書きます。
<?php //get_posts()で呼び出したいデータについての情報を書く $args = array( //3件を表示する 'posts_per_page'=> 3, //制作実績のデータ 'post_type' => 'works', //制作実績カテゴリの「ウェブ」のデータ 'works_cat' => 'web', ); //get_posts()でデータを取得 $myposts = get_posts( $args ); if($myposts): //取得したデータで繰り返し処理 foreach ( $myposts as $post ) : //以下の記述が重要(A) setup_postdata( $post ); //これ以下が繰り返したい処理の内容 ?> <div class="list-item"> <div class="thum"><a href="<?php the_permalink();?>"><?php the_post_thumbnail('medium');?></a></div> <h3 class="list-item-title"><a href="<?php the_permalink();?>"><?php the_title();?></a></h3> </div><!-- .list-item --> <?php//繰り返しの処理はここまで endforeach; //以下の記述は大事。(A)でsetupしたものをリセットする wp_reset_postdata(); ?>
カテゴリのデータを指定している部分がちょっとわかりにくいでしょうか。
'works_cat' => 'web'
関係性としては、下記のようになっています。
'タクソノミー名(taxonomy)' => 'ターム名(term)'
ここで、ついてこれない方も、きっと、いらっしゃるはず・・・・・。
タクソノミー名とターム名の関係は、カテゴリーとカテゴリ名と同じなんですが、イメージできますかね・・・・。
わからんぞ!という方向けに、確認方法を記載しておきます。
下記の通り、制作実績カテゴリの(表示では「分類」ってなってますけど)ページを表示します。
書き込んだとおりですが、下線部分がタクソノミーの名前です。
/wp-admin/edit-tags.php?taxonomy=works_cat&post_type=works
functions.phpで設定しています。
上記のソースのとおりに書いてアップすると、「制作実績分類」の「Web関係」に属している記事3件分のアイキャッチ画像やらタイトルやらが表示されるはずです。
これで「特定の分類の記事を3件表示する」ということができました。
なので、この方法で、表示したいカテゴリ分だけ、上記のようなソースをテンプレートに書いていけば、「カテゴリ別に記事を3件表示する」ということが叶います。
ですが、カテゴリーは増えるかもしれないし、減るかもしれないし、たくさんあったとしたら、ひとつづつ書いていくのはどう考えても面倒。
なので、記事を呼び出す「サブループ」を「カテゴリがある分だけ繰り返す」別のループに入れちゃいます!
詳しくは、補足3に続きまーす。