カスタム投稿タイプを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'  // 月額利用額の少ないもの順
    ]
  ];
?>

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

keyboard_control_keyTOP