例えば「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'};
これらの関数を使えば、データ取得に関しては大体のことは出来る(はず)。