カスタム投稿タイプをWP_Queryループで抽出条件を複数指定して表示する
カスタム投稿タイプを、カスタムタクソノミー(カテゴリー・タグ)やカスタムフィールドなど、抽出条件を複数指定して、WP_Queryループで表示させる方法を紹介します。
私は習得するのにちょっと時間がかかってしまいましたが…😅、一度覚えてしまうと、トップーページや固定ページ、サイドバーなどにいろいろ使えて、とにかく便利です!
いくつかサンプルを書いておきますので、どなたかのお役に立てればうれしいです。
※カスタムフィールド名に「wpcf-」が付いているのは、「Toolset Types」を利用しているためです。
サンプル
チェックボックスにチェックの入った記事から並べる。ソート順も複数指定
【条件】
- カスタム投稿「gourmet」の記事
- カスタムタクソノミー「area_category」の、ターム「tokyo」に属する記事
- 10件表示
- カスタムフィールド「wpcf-gensen」のチェックボックスにチェックの入った記事から順に並べる
- 新しい記事から順に並べる
<?php
$args = [
'post_type' => 'gourmet', /* カスタム投稿名が「gourmet」 */
'posts_per_page' => 10, /* 表示する数 */
'tax_query' => [
[
'taxonomy' => 'area_category', /* カスタムタクソノミー名が「area_category」 */
'field' => 'slug',
'terms' => 'tokyo' /* ターム名が「tokyo」 */
]
],
'meta_query' => [
'relation' => 'AND',
'meta_gensen' => [
'key' => 'wpcf-gensen', /* カスタムフィールド名が「wpcf-gensen」 */
'value' => ['1', '0'], /* チェックボックスのON・OFF */
'type' => 'char'
]
],
'orderby' => [
'meta_gensen' => 'desc', /* チェックボックス「wpcf-gensen」にチェックの入ったものから順に */
'date' => 'desc' /* 新しい記事から順に */
],
];
?>
複数条件指定、カスタムフィールドの数値で並べ替える
【条件】
- カスタム投稿「takuhai」の記事
- カスタムタクソノミー「category_company」の、ターム「company_a」に属する記事
- 全て表示
- カスタムフィールド「wpcf-family」 の値が「3」の記事
- カスタムフィールド「wpcf-monthly」の値が「10000より上」の記事
- カスタムフィールド「wpcf-monthly」の値の少ないものから順に並べる
<?php
$args = [
'post_type' => 'takuhai', // カスタム投稿名が「takuhai」
'posts_per_page' => -1, // 全記事表示
'tax_query' => [
[
'taxonomy' => 'category_company', // カスタムタクソノミー名が「category_company」
'field' => 'slug',
'terms' => 'company_a' // ターム名が「company_a」
]
],
'meta_query' => [
'relation' => 'AND',
'meta_family' => [
'key' => 'wpcf-family', // カスタムフィールド名が「wpcf-family」
'value' => '3', // カスタムフィールドの値
'type' => 'numeric',
'compare' => '=' // 値一致
],
'meta_monthly' => [
'key' => 'wpcf-monthly', // 月額利用額・カスタムフィールド名が「wpcf-monthly」
'value' => '10000', // カスタムフィールドの値
'type' => 'numeric',
'compare' => '>' // 値より上
]
],
'orderby' => [
'meta_monthly' => 'asc' // 月額利用額の少ないもの順
]
];
?>