エピソードのリストを作るよ②

こんばんわ。本日は雨が降っていたため、ずっと家で引きこもっていました。

さて前回の投稿の続きで、今回は欲しいリストをちゃんと読みこみたいと思います。

前回のおさらい

前回の投稿では、こんなコードを書いてタイトルのIDを取ったところで終了しました。

function get_episode_list(){
	//ID取得
	$id = get_the_ID();

	//値を返す
	return $id;
}
add_shortcode('episode_list', 'get_episode_list');

『get_the_ID()』てのは、Wordpressのテンプレートタグの一つで、投稿IDを取得することができるものです。それを使って、タイトルの投稿IDを取得してそれを返すところまでやりました。今回はこのコードにさらに手を加えていきます。


get_posts()で投稿を取得するのよ

前回取得した投稿IDはとりあえず置いておいて、まずは投稿リストを取得してみましょうや。

function get_episode_list(){
	
	//ID取得
	$id = get_the_ID();

	//読み込む投稿の条件指定
	$args = array(
					"post_type" => "episode"
	);

	//投稿を取得
	$post_list = get_posts($args);

	//中身確認
	print '<pre>';
	var_dump($post_list);
	print '</pre>';

	//値を返す
	return $post_list;
}
add_shortcode('episode_list', 'get_episode_list');

ほい。前回のコードにさらに手を加えました。今回はテンプレートタグ『get_posts()』で投稿リストを取得しています。

『get_posts()』てのは、任意の条件にあてはまる投稿を任意の順序で読み込むテンプレートタグです。今回指定した条件は、連想配列の形で指定してあげます。

今回の条件は、『カスタム投稿タイプ”エピソード”の投稿』です。なので、『"post_type" => "episode"』と指定しています。これはカスタム投稿タイプ”エピソード”の投稿タイプ名が”episode”ですから、post_typeにepisodeを指定しているのです。

後の『var_dump()』は説明不要だと思います。preタグで挟んであげると見やすい形に整頓できるので、ワシはよくやってます。

というわけで、改めてページを読み込むと、記事タイトルと記事の間に、こんな感じで配列の表示が出てくると思います。

画像1

『array』の横の数字が、読み込んだ記事の件数になりますね。どうやら無事に全部読み込めているようです。

ちなみに『get_posts()』に条件を何も指定しなかった場合は、通常の投稿タイプをすべて読み込むようです。


さらにカスタムフィールドの値を条件に指定するわよ

しかし今のままでは投稿した記事すべてを読み込んでしまうので、ここからさらに絞り込めるようにしていきます。

function get_episode_list(){
	//ID取得
	$id = get_the_ID();

	//読み込む投稿の条件指定
	$args = array(
					"post_type" => "episode",
					'meta_value' => array('title' => $id)
	);

	//投稿を取得
	$post_list = get_posts($args);

	//中身確認
	print '<pre>';
	var_dump($post_list);
	print '</pre>';

	//値を返す
	return $post_list;
}
add_shortcode('episode_list', 'get_episode_list');

ほい。条件指定のところにほんの少しだけ手を加えました。

カスタムフィールドで記事を絞り込みたいときは、『meta_value』の添え字にさらに連想配列を渡す感じです。今回でいえば、『'meta_value' => array('title' => $id)』というのが『カスタムフィールド"title"の値が$idと等しい投稿』という意味になりますわ。ちなみに条件を複数設定する場合は、カンマ(,)で区切ることを忘れずに。

これで、こっちが欲しいリストが読み込めるはずです。

ただし、このままではまだ使えません。ちゃんとこのリストを文字列データに組み替えてやらにゃいかんのです。

というわけで、それは次回に回しますわ。


余談ですが、先日から仁王を進めてます。とても面白いのですが『和風』『死にげー』という共通点がある隻狼をずっとやっていたため、つい攻撃に四角ボタンではなくR1を押したくなります。

「弾けないッ!? なんでだッ!!?」こんなんばっかです。こんなんでクリアできるのか……(;・∀・)

この記事が気に入ったらサポートをしてみませんか?