課題5:実績一覧のページを作ろう の補足2

補足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)'

ここで、ついてこれない方も、きっと、いらっしゃるはず・・・・・。

タクソノミー名とターム名の関係は、カテゴリーとカテゴリ名と同じなんですが、イメージできますかね・・・・。
わからんぞ!という方向けに、確認方法を記載しておきます。

スクリーンショット 2015-11-02 16.16.57

下記の通り、制作実績カテゴリの(表示では「分類」ってなってますけど)ページを表示します。

スクリーンショット 2015-11-02 16.23.09

書き込んだとおりですが、下線部分がタクソノミーの名前です。
/wp-admin/edit-tags.php?taxonomy=works_cat&post_type=works
functions.phpで設定しています。

上記のソースのとおりに書いてアップすると、「制作実績分類」の「Web関係」に属している記事3件分のアイキャッチ画像やらタイトルやらが表示されるはずです。

これで「特定の分類の記事を3件表示する」ということができました。

なので、この方法で、表示したいカテゴリ分だけ、上記のようなソースをテンプレートに書いていけば、「カテゴリ別に記事を3件表示する」ということが叶います。

ですが、カテゴリーは増えるかもしれないし、減るかもしれないし、たくさんあったとしたら、ひとつづつ書いていくのはどう考えても面倒。

なので、記事を呼び出す「サブループ」を「カテゴリがある分だけ繰り返す」別のループに入れちゃいます!

詳しくは、補足3に続きまーす。

コメントをどうぞ

メールアドレスが公開されることはありません。 が付いている欄は必須項目です