【WordPress】サブループで記事の読み込み

「query_posts」は現在非推奨なので注意。予期せぬエラーが出るときがあります。

get_posts( )

get_posts( )

パラメータに基づいて投稿データの配列を作成する関数。

<?php $args = array(
	'posts_per_page'   => 5, //件数
	'offset'           => 0, //取得開始位置
	'category'         => '', //カテゴリー ID。カンマで区切って複数指定も可
	'category_name'    => '', //カテゴリースラッグ
	'orderby'          => 'date', //取得対象を設定
	'order'            => 'DESC', //並び順。降順か昇順か
	'include'          => '', //取得したい投稿のID
	'exclude'          => '', //除外したい投稿のID
	'meta_key'         => '', //カスタムフィールド名
	'meta_value'       => '', //カスタムフィールドの値
	'post_type'        => 'post', //投稿タイプ
	'post_mime_type'   => '', //添付ファイルのとき MIME タイプ(image/png など)
	'post_parent'      => '', //親の投稿ID
	'author'	   => '', //作者
	'post_status'      => 'publish', //投稿ステータス
	'suppress_filters' => true //最終的な検索条件に対してフィルター処理を行うかどうか
);
$posts_array = get_posts( $args ); ?>

カスタム投稿を読み込む

下記だと、カスタム投稿タイプ「note」で、カスタムタクソノミー「note_tag」の「photo」タームを、ランダムで6件読み込む。

<?php $the_query = get_posts(array(
    'post_type' => 'note',
    'posts_per_page' => 6,
    'orderby' => 'rand',
    'tax_query'      => array(
        array(
            'taxonomy' => 'note_tag',
            'field'    => 'slug',
            'terms'    => 'photo'
        )
    ),
)); ?>
<?php foreach ($the_query as $post) : setup_postdata($post); ?>

    <div class="post_item"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div>


<?php endforeach; ?>
<?php wp_reset_postdata(); ?>

tax_queryに入れられるのは下記

taxonomyタクソノミー名
fieldタクソノミータームの種類を選択します。
使える値は ‘term_id’(デフォルト)、’name’、’slug’ 、 ‘term_taxonomy_id’
termsターム名
include_children階層を持つタクソノミーの場合、子孫タクソノミーを含めるかどうか。
デフォルトは true(含める)
operator演算子。
使える値は ‘IN'(デフォルト)、’NOT IN’、’AND’、’EXISTS’、 ‘NOT EXISTS’

カスタムフィールドの値で絞り込み

下記だと、カスタム投稿タイプ「note」のうち、カスタムフィールド「cf01」が「num」、「cf02」が「japan」の投稿を読み込み。

<?php $the_query = get_posts( array(
  'post_type' => 'note',
  'meta_query' => array(
    'relation' => 'AND', //条件をすべて満たす
    array(
      'key' => 'cf01',
      'value' => 'num',
    ),
    array(
      'key' => 'cf02',
      'value' => 'japan',
    ),
  ),
)); ?>

これからさらに入れ子にすることもできます。くわしくはcodexの「WP Query」を見るとよいです。

meta_queryに入れられるのは下記

keyカスタムフィールド名
valueカスタムフィールドの値
compareテスト演算子。
使える値は ‘=’(デフォルト)、 ‘!=’、 ‘>’、 ‘>=’、 ‘<‘、 ‘<=’、 ‘LIKE’、 ‘NOT LIKE’、 ‘IN’、 ‘NOT IN’、 ‘BETWEEN’、’NOT BETWEEN’、 ‘EXISTS’ 、’NOT EXISTS’
typeカスタムフィールドの値のタイプ。
使える値は ‘NUMERIC’, ‘BINARY’, ‘CHAR’(デフォルト), ‘DATE’, ‘DATETIME’, ‘DECIMAL’, ‘SIGNED’, ‘TIME’, ‘UNSIGNED’
※’DECIMAL’ と ‘NUMERIC’ には有効桁数と小数点以下の桁数を指定できる

WP Query( )

WP_Query()

WP_Query( $args )

WordPress ブログへの複雑な投稿やページのリクエストを取り扱う。

参考