$args = array での指定とパラメータ

関数のアイキャッチ

WordPressループで各パラメータの指定ができれば、サイト構築の自由度が上がります。

パラメータについては、関数リファレンス/WP Queryにて詳しい情報が書かれていますが、以下はよく使う内容の抜粋です。

投稿タイプ

post_type で投稿タイプを指定します。

PHP

$args = array(
    'post_type' => 'post', 
                   // 'any' - すべてのタイプを含める
                   // 'post'(初期値) - 投稿
                   // 'page' - 固定ページ
                   // 'hogehoge' - カスタム投稿タイプスラッグ
);

デフォルト値は 'post'で、複数指定する場合は以下のような配列で指定が可能です。

PHP

'post_type' => array('post','page','hogehoge'),

特定のページ

IDやスラッグを使って、特定の投稿ページや固定ページを指定します。

PHP

$args = array(
  'p' => 10,                      //投稿IDの指定
  'name' => 'post-slug',          //投稿スラッグの指定
  'page_id' => 20,                //固定ページIDの指定
  'pagename' => 'page-slug',      //固定ページスラッグの指定
  'post_parent' => 30,            //親IDの指定
  'post__in' => array(5, 8, 11),  //投稿IDを配列で指定
  'post__not_in' => array(3, 6),  //省きたい投稿のIDを配列で指定
);

投稿ステータス

post_status で投稿ステータスを指定します。

PHP

$args = array(
    'post_status' => 'publish', 
                     // 'publish'(初期値) - 公開ページ。
                     // 'pending' - レビュー待ち投稿
                     // 'draft' - 下書き投稿。
                     // 'future' - 予約公開設定投稿。
                     // 'private' - ログインユーザー用投稿。
                     // 'trash' - ゴミ箱に入った投稿
);

1ページあたりの件数とページ送り

1ページに含める投稿数。'posts_per_page' => -1 にすると、全ての投稿を取得します。

PHP

$args = array(
    'posts_per_page' => 10, // int - 取得する投稿数 「-1」指定で全件表示
);

ページ送りを使用する場合は、事前に $paged = get_query_var('paged') ?: 1; を実行して $paged を指定します。

一式を記述すると以下の通りです。

PHP

$paged = get_query_var('paged') ?: 1;  //先頭ページでは 0 が返ってくるので、強制的に 1 をセット

$args = array(
  'posts_per_page' => -1,           //全件取得
  'paged' => $paged,                //現在のページ番号の指定
);

並び順

order では昇順・降順のどちらで並び替えができ、orderby ではパラメータで指定した項目の値によって、取得した投稿を並び替えを行います。

PHP

$args = array(
    'order' => 'DESC',   // (string) - 昇順・降順指定
               // 'DESC'(初期値) - 大きい値から小さい値(降順) 例 3, 2, 1; c, b, a
               // 'ASC' - 小さい値から大きい値(昇順) 例 1, 2, 3; a, b, c
    'orderby' => 'date', // (string) - 並び替え対象フィールド
                // ※複数指定は半角スペース区切り 例 'orderby' => 'author id'
               // 'none' - 並び替えない
               // 'ID' - 投稿ID
               // 'author' - 著者
               // 'title' - タイトル
                // 'name' - スラッグ
                // 'date'(初期値) - 日付
               // 'modified' - 更新日
                // 'rand' - ランダム
               // 'comment_count' - コメント数
);

日付や時間

日付や時間に関するパラメータを指定します。

PHP

$args = array(
    'year' => 2017,    //年の指定 4桁で指定します
    'mouthnum' => 6,   //月の指定 1 から 12
    'w' => 6,          //週番号の指定 年内の週番号 (0 から 53)
    'day' => 14,       //日の指定 1 から 31
    'hour' => 20,      //時間の指定
    'minute' => 0,     //分の指定
    'second' => 0,     //秒の指定
    'm' => 201706      //年と月で指定 (例: 202012)
);

カテゴリーの指定

カテゴリーに関するパラメータを指定します。

PHP

$args = array(
    'cat' => 5,                          // (int) - カテゴリID.
    'category_name' => 'news, other',    // (string) - スラッグ:指定カテゴリのどれかに属する投稿を表示(or)
    'category_name' => 'news+other',     // (string) - スラッグ:指定カテゴリすべてを持つ投稿を表示(and)
    'category__in' => array(1, 3),       // (array) - カテゴリID:指定カテゴリのどれかに属する投稿を表示(or)
    'category__and' => array(1, 3),      // (array) - カテゴリID:指定カテゴリすべてを持つ投稿を表示(and)
    'category__not_in' => array(1, 3),   // (array) - カテゴリID:指定カテゴリ以外の投稿を表示(not)
);

'category__in''category__and' は同じクエリーで同時使用できないので注意が必要です。

タグの指定

タグに関するパラメータを指定します。

PHP

$args = array(
    'tag' => 'pickup',                             // (string) - タグスラッグ
    'tag_id' => 2,                                 // (int) - タグID
    'tag_slug__in' => array('pickup', 'notice'),   // (array) - タグスラッグ:指定タグのいずれかに属する投稿を表示(or)
    'tag_slug__and' => array('pickup', 'notice'),  // (array) - タグスラッグ:指定タグーすべてを持つ投稿を表示(and)
    'tag__in' => array(1, 3),                      // (array) - タグID:指定タグのいずれかに属する投稿を表示(or)
    'tag__and' => array(1, 3),                     // (array) - タグID:指定タグすべてを持つ投稿を表示(and)
    'tag__not_in' => array(1, 3),                  // (array) - タグID:指定タグ以外の投稿を表示(not)
);

'tag__in''tag__not_in' は同じクエリーで同時使用できないので注意が必要です。

パスワードパラメータ

パスワードの状態を指定します。

PHP

$args = array(
     'has_password' => true,    // (bool) - パスワード付き投稿を指定
                               // true - パスワード付き投稿表示
                               // false - でパスワードなし投稿表示
                               // null - でパスワード関係なく全て表示
    'post_password' => 'pass', // (string) - 特定パスワードの投稿
);

タクソノミー

タクソノミーに関するパラメータです。

PHP

$args = array(
  'tax_query' => array(                      //タクソノミーに関する指定はこの中にすべて
    'relation' => 'AND',                     //条件1,2をどのような関係で指定するか
    //条件1
     array(
        'taxonomy' => 'music',              //タクソノミー名を指定
        'field' => 'id',                    //タームの指定をIDで指定するか、slugで指定するか
        'terms' => array(102, 114, 235),    //タームをIDで指定('field'が'id'なので)
        'operator' => 'AND',                //'terms'をどの関係で指定するか
        'include_children' => false,        //子タクソノミーを含めるかどうか
     ),
     //条件2
     array(
        'taxonomy' => 'movie',
        'field' => 'slug',
        'terms' => 'action',                //タームをスラッグで指定('field'が'slug'なので)
     )
    )
);