例えば「news」というカスタム投稿データを取得する場合。
query_posts(array('post_type' => 'news'));
または
$post_list = get_posts(array('post_type' => 'news'));
query_postsはメインループを書き換えてしまうから、使う時は気を付ける。(wp_reset_query()も適宜使用する。)
query_postsでデータを取得したら、
have_posts()
で、投稿データが存在するかどうかを確認。
the_post()
で、投稿データをロード。(要するに、画面に表示出来るようにする。)
実際にはこんな風に使われる。
<?php while ( have_posts() ) : the_post(); ?> ~ いろいろ処理 ~ <?php endwhile; ?>
get_postsで投稿データを取得した場合、
foreach($post_list as $line){
~ いろいろ処理 ~
}
みたいな感じ。the_post()は必要なし。
query_postsの時のwhileやget_postsの時のforeachは、カスタム投稿に限らず普通の投稿や固定ページも同じように使う。
そしてカスタムフィールドのデータを取得するには以下の3つの関数が主に使われる。
// ループ内で、現在の投稿の特定のカスタムフィールドの値を取得
$value = post_custom('subtitle');
echo $value;
// ループ内外問わず、第一引数に入れたIDの特定のカスタムフィールドの値を取得
$keyword = get_post_meta( $line->ID , 'keyword' , true );
echo $keyword;
// ループ内で、引数に入れたIDの投稿の全カスタムフィールドの値を配列で取得
$fields = get_post_custom($line->ID);
echo $fields{'date'};
これらの関数を使えば、データ取得に関しては大体のことは出来る(はず)。
