WP Queryパラメーター一覧|WordPressカスタマイズ用スニペット

WordPressで記事やカスタム投稿を自由に取得したいとき、欠かせないのが WP_Query クラスです。中でも、パラメーターの指定方法を理解すれば、表示件数・並び順・カテゴリー・カスタムフィールドなどを自在にコントロールできます。

この記事では、WP Queryのパラメーター一覧と実用スニペットに特化して紹介します。すぐに使えるコード例を参考に、効率的なカスタマイズにお役立てください。

WP Query 基本の書き方

WP_Query は配列で条件を渡します。以下のようなコードの書き方が一般的です。

PHP
$args = array(
  'post_type' => 'post',
  'posts_per_page' => 5,
  'cat' => '10',
  'tag' => 'tagslug',
  'category_name' => 'cat1',
  'order' => 'ASC',
  'orderby' => 'modified',
  'post__not_in' => array(get_the_ID()),
);
$query = new WP_Query( $args );

投稿取得系パラメーター

記事タイプやステータス、特定の投稿を指定・除外することもできます。

PHP
$args = array(
  'post_type' => 'custom_post', // 投稿タイプ
  'post_status' => 'publish', // 公開のみ
  'post__in' => array(12, 34), // 特定IDのみ
  'post__not_in'=> array(56, 78), // 特定IDを除外
);
$query = new WP_Query( $args );

post_type

指定できる値は、'post'(通常の投稿)、 'page'(固定ページ)、'カスタム投稿スラッグ'

初期値は 'post'

複数指定もできます。

PHP
'post_type' => array('type01','type02'),

post_status

「公開」や「非公開」といった投稿の表示状態を指定して表示させるのが 'post_status' です。

指定できる値
  • 'publish' – 公開中
  • 'pending' – 承認待ち
  • 'draft' – 下書き
  • 'auto-draft' – コンテンツのない新しく投稿された投稿(作成途中で自動保存された投稿)
  • 'future' – 予約投稿
  • 'private' – 非公開
  • 'inherit' – 投稿の添付ファイルやリビジョンに割り当てられるステータス。実際のステータスは親投稿のステータス。
  • 'trash' – ゴミ箱にある
  • 'any''inherit', 'trash', 'auto-draft' を除く全ての状態。カスタム投稿で 'exclude_from_search' がtrue に設定されている場合も除外される。

初期値は 'publish' 、ログインしている場合は 'private' も追加される。

ログイン時にも非公開記事を表示させたくない時には 'post_status' => 'publish', を追加することで、公開記事のみに限定して表示させることができます。

post__in, post__not_in

post__in は特定の投稿のみ、post__not_in は除外したい投稿を指定します。

post__not_in は、個別ページに関連記事を表示させる際に、現在の投稿ページを除外する、という場合などによく使います。

'post__not_in' => array(get_the_ID()), のような書き方や、グローバル変数 $post を利用して以下のように書くこともできます。

PHP
global $post;
$args = array(
  'post_type' => 'post',
  'posts_per_page' => 3,
  'orderby' => 'rand',
  'post__not_in' => array($post->ID),
);

表示件数・並び順パラメーター

記事の件数や並び順に関するパラメーターです。

PHP
$args = array(
  'posts_per_page' => 10,     // 1ページに10件
  'paged' => get_query_var('paged', 1), // ページネーション対応
  'orderby' => 'date', // 並び順(date, title, randなど)
  'order' => 'DESC', // 昇順: ASC, 降順: DESC
);
$query = new WP_Query( $args );

posts_per_page

1ページに表示させたい最大投稿数を指定します。全件表示させたい場合は、’-1′ にします。

orderby 例:date, title, meta_value, rand, meta_value_num

‘order’, ‘orderby’ : 投稿の並び順を指定する

記事一覧の表示順序を指定するために使用するのがこの2つです。

order降順(DESC)、昇順(ASC)のどちらかを指定。(初期値は 'DESC'
orderbyで設定した内容の昇順・降順が表示される。
orderby「どの順序で並び替えるか」を指定。2つ以上でも設定可。
'date' …投稿日の日付順(初期値)
'modified' …編集日の日付順
'rand' …ランダムな並び順

カテゴリー・タクソノミー系パラメーター

特定カテゴリーやタクソノミー条件で取得します。

PHP
$args = array(
  'category_name' => 'news', // カテゴリースラッグ
  'tag' => 'campaign', // タグスラッグ
  'tax_query' => array(
    array(
      'taxonomy' => 'genre', // カスタムタクソノミー
      'field' => 'slug',
      'terms' => array('drama', 'comedy'),
    ),
  ),
);
$query = new WP_Query( $args );

cat, category_name

カテゴリーを指定したい場合に使用するのがこれらのパラメーターです。値の指定方法が異なるので覚えておきましょう。
私はIDは覚えられないけどスラッグ名は覚えていることが多いので、 category_name をよく使用します。

cat「カテゴリーID」を指定する。
category_name「カテゴリースラッグ」を指定する。

タグから記事を指定する : ‘tag’

タグを指定する場合はスラッグで指定します。

PHP
'tag' => 'tagslug',

IDで指定する場合は 'tag_id' というパラメーターを使用します。

PHP
'tag_id' => 10,

tax_query

tax_query パラメーターは、タクソノミーやそのタームから特定の投稿を絞り込むことができます。
初期の「カテゴリー」や「タグ」などの分類以外の取得や複数の条件を細かく指定する際に使用します。

PHP
'tax_query' => array(
  'relation' => 'AND',
  array(
    'taxonomy' => 'brand',
    'field' => 'slug',
    'terms' => 'nike',
  ),
  array(
    'taxonomy' => 'clothing_type',
    'field' => 'term_id',
    'terms' => array( 103, 115, 206 ),
    'operator' => 'NOT IN',
  ),
),
relation複数のタクソノミー配列を指定する時の論理関係。指定可能な値は「AND」、「OR」です。
'AND' … 全ての条件に一致
'OR' … いずれかの条件に一致
タクソノミー配列が1つの場合は不要です。
taxonomyタクソノミー名を指定
fieldタームをどの値で指定するか。
指定可能な値:「term_id」、「name」、「slug」、「term_taxonomy_id」。
デフォルト:「term_id」。
termsタームを指定
include_children階層型分類に子を含めるかどうか。デフォルトは true。
operatorターム配列の演算子。
指定できる値:「IN」、「NOT IN」、「AND」、「EXISTS」、「NOT EXISTS」。
デフォルト:「IN」。

カスタムフィールド系パラメーター

特定のカスタムフィールド条件で絞り込みます。

PHP
$args = array(
  'meta_key' => 'price',
  'meta_value' => '1000', // 単一条件
);

// 複数条件
$args = array(
  'meta_query' => array(
    'relation' => 'AND',
    array(
      'key' => 'price',
      'value' => 1000,
      'compare' => '>=',
      'type' => 'NUMERIC',
    ),
    array(
      'key' => 'stock',
      'value' => 1,
      'compare' => '>',
      'type' => 'NUMERIC',
    ),
  ),
);
$query = new WP_Query( $args );

meta_query で使うデータ型と比較演算子

データ型内容
CHAR文字
NUMERIC‘SIGNED’の別名
DECIMAL浮動小数点数
SIGNED整数(符号あり)
UNSIGNED整数(符号なし)
DATE日付
DATETIME日時
TIME時刻
BINARYバイナリー
比較演算子内容
=一致する
!=一致しない
>より大きい
>=以上
<より小さい
<=以下
LIKE指定した文字列に一致
NOT LIKE指定した文字列に一致しない場合
IN(配列)で指定したどれかに一致する
NOT IN(配列)で指定したどれにも一致しない
BETWEEN2つの値で指定した範囲内(境界を含む)
NOT BETWEEN2つの値で指定した範囲外

日付・時間系パラメーター

投稿日を基準に取得します。

PHP
$args = array(
  'date_query' => array(
    array(
      'after' => '2025-01-01',
      'before' => '2025-12-31',
      'inclusive' => true,
    ),
  ),
);
$query = new WP_Query( $args );

投稿者・権限系パラメーター

投稿者を指定します。

PHP
$args = array(
  'author' => 3, // 投稿者ID
  'author_name' => 'taro', // 投稿者スラッグ
);
$query = new WP_Query( $args );

複合条件の組み合わせ例

実用的な条件例を2つ。

【カスタム投稿+タクソノミー+並び替え】

PHP
$args = array(
  'post_type' => 'product',
  'tax_query' => array(
    array(
      'taxonomy' => 'brand',
      'field' => 'slug',
      'terms' => 'nike',
    ),
  ),
  'orderby' => 'meta_value_num',
  'meta_key'=> 'price',
  'order' => 'ASC',
);
$query = new WP_Query( $args );

【カスタムフィールド+日付条件】

PHP
$args = array(
  'meta_query' => array(
    array(
      'key' => 'featured',
      'value' => 'yes',
    ),
  ),
  'date_query' => array(
    array(
      'after' => '2025-01-01',
    ),
  ),
);
$query = new WP_Query( $args );

カテゴリー : WordPress

index