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