WordPressループで各パラメータの指定ができれば、サイト構築の自由度が上がります。
パラメータについては、関数リファレンス/WP Queryにて詳しい情報が書かれていますが、以下はよく使う内容の抜粋です。
投稿タイプ
post_type
で投稿タイプを指定します。
$args = array(
'post_type' => 'post',
// 'any' - すべてのタイプを含める
// 'post'(初期値) - 投稿
// 'page' - 固定ページ
// 'hogehoge' - カスタム投稿タイプスラッグ
);
デフォルト値は 'post'
で、複数指定する場合は以下のような配列で指定が可能です。
'post_type' => array('post','page','hogehoge'),
特定のページ
IDやスラッグを使って、特定の投稿ページや固定ページを指定します。
$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
で投稿ステータスを指定します。
$args = array(
'post_status' => 'publish',
// 'publish'(初期値) - 公開ページ。
// 'pending' - レビュー待ち投稿
// 'draft' - 下書き投稿。
// 'future' - 予約公開設定投稿。
// 'private' - ログインユーザー用投稿。
// 'trash' - ゴミ箱に入った投稿
);
1ページあたりの件数とページ送り
1ページに含める投稿数。'posts_per_page' => -1
にすると、全ての投稿を取得します。
$args = array(
'posts_per_page' => 10, // int - 取得する投稿数 「-1」指定で全件表示
);
ページ送りを使用する場合は、事前に $paged = get_query_var('paged') ?: 1;
を実行して $paged
を指定します。
一式を記述すると以下の通りです。
$paged = get_query_var('paged') ?: 1; //先頭ページでは 0 が返ってくるので、強制的に 1 をセット
$args = array(
'posts_per_page' => -1, //全件取得
'paged' => $paged, //現在のページ番号の指定
);
並び順
order
では昇順・降順のどちらで並び替えができ、orderby
ではパラメータで指定した項目の値によって、取得した投稿を並び替えを行います。
$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' - コメント数
);
日付や時間
日付や時間に関するパラメータを指定します。
$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)
);
カテゴリーの指定
カテゴリーに関するパラメータを指定します。
$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'
は同じクエリーで同時使用できないので注意が必要です。
タグの指定
タグに関するパラメータを指定します。
$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'
は同じクエリーで同時使用できないので注意が必要です。
パスワードパラメータ
パスワードの状態を指定します。
$args = array(
'has_password' => true, // (bool) - パスワード付き投稿を指定
// true - パスワード付き投稿表示
// false - でパスワードなし投稿表示
// null - でパスワード関係なく全て表示
'post_password' => 'pass', // (string) - 特定パスワードの投稿
);
タクソノミー
タクソノミーに関するパラメータです。
$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'なので)
)
)
);