【WordPress】サブループで記事の読み込み
「query_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( $args )
WordPress ブログへの複雑な投稿やページのリクエストを取り扱う。 |
参考
- get_posts() – Function | Developer.WordPress.org
https://developer.wordpress.org/reference/functions/get_posts/ - get_posts() – Function | Developer.WordPress.org
https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E... - get_posts() – Function | Developer.WordPress.org
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E... - meta_queryを使って、カスタムフィールドの条件で絞り込んだ記事一覧を取得する | WordPressカスタマイズ事例【100ウェブ】
https://100webdesign.jp/services/wordpress/wp_result/wp_result-189/
関連記事
-
WordPress 設定 関数の使い方
【WordPress】ウィジェット機能の追加
-
WordPress プラグイン
【WordPressプラグイン】Smart Custom Fieldsの出力
-
WordPress
【WordPress】管理画面をカスタマイズする
-
WordPress
【WordPress】記事一覧で年別タイトルをつける
-
WordPress
【WordPress】テンプレート階層
-
WordPress
【WordPress】ループ内でカテゴリーの取得と表示
-
WordPress
【WordPress】カスタムタクソノミーの出力あれこれ
-
WordPress プラグイン
【WordPressプラグイン】Advanced Custom Fieldsの出力