エピソードのリストを作るよ②
こんばんわ。本日は雨が降っていたため、ずっと家で引きこもっていました。
さて前回の投稿の続きで、今回は欲しいリストをちゃんと読みこみたいと思います。
前回のおさらい
前回の投稿では、こんなコードを書いてタイトルの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タグで挟んであげると見やすい形に整頓できるので、ワシはよくやってます。
というわけで、改めてページを読み込むと、記事タイトルと記事の間に、こんな感じで配列の表示が出てくると思います。
『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を押したくなります。
「弾けないッ!? なんでだッ!!?」こんなんばっかです。こんなんでクリアできるのか……(;・∀・)
この記事が気に入ったらサポートをしてみませんか?