Learning site for website creation

WordPressで記事一覧取得時に使う条件

公開日:2017年03月03日 更新日:2021年08月18日

よく使うものをまとめて記録

<?php
// 一覧ページでページ番号を取得する方法
$paged = get_query_var('paged') ? get_query_var('paged') : 1 ;
// 個別ページでページ番号を取得する方法
$paged = get_query_var('page') ? get_query_var('page') : 1 ;

$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'」は同じクエリーで同時使用できない


    // タグ
    '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'」は同じクエリーで同時使用できない


    // 件数
    'posts_per_page' => 10, // (int) - 取得する投稿数 「-1」指定で全件表示
    'paged' => $paged,      // (int) - ページネーション時のページ数
                            // 事前に「 $paged = get_query_var('paged') ? get_query_var('paged') : 1 ; 」を実行して「$paged」を指定


    // 並び指定
    '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' - コメント数


    // ページタイプ
    'post_type' => 'post', // (string) - ページタイプを指定
                           // 'post'(初期値) - 投稿
                           // 'page' - 固定ページ
                           // 'hogehoge' - カスタム投稿タイプスラッグ
    'post_type' => array(  // (array) - ページタイプを配列で複数指定
        'post',
        'page',
        'hogehoge'
    ),
    'post_status' => 'publish', // (string) - 投稿ステータス指定
                                // 'publish'(初期値) - 公開ページ。
                                // 'pending' - レビュー待ち投稿
                                // 'draft' - 下書き投稿。
                                // 'future' - 予約公開設定投稿。
                                // 'private' - ログインユーザー用投稿。
                                // 'trash' - ゴミ箱に入った投稿
    'post_status' => array( //(array) - 投稿ステータスを配列で複数指定
      'publish',
      'private',
    ),


    // 先頭固定表示
    'ignore_sticky_posts' => 1, // (boolean) - 先頭固定表示:
                                // 0(初期値) - 先頭固定表示有効
                                // 1 - 先頭固定表示無効(ただし先頭固定表示投稿は通常位置で表示)
    'post__not_in' => get_option( 'sticky_posts' ), // (array) - 先頭固定表示投稿を一覧から除外


    // 投稿・固定ページ
    'p' => 1,                           // (int) - 投稿ID
    'name' => 'hello-world',            // (string) - 投稿スラッグ
    'page_id' => 1,                     // (int) - 固定ページID
    'pagename' => 'sample-page',        // (string) - 固定ページスラッグ
    'pagename' => 'contact/tokyo',      // (string) - 子ページ指定はスラッシュで区切って指定
    'post__in' => array(1, 2, 3),       // (array) - 指定した投稿IDを表示
                                        // ※先頭固定投稿は条件合致投稿の前に追加される
                                        // ※先頭固定投稿表示させない場合ignore_sticky_postsを使用
    'post__not_in' => array(1, 2, 3),   // (array) - 指定した投稿IDを以外表示
                                        // ※「'post__in'」と「'post__not_in'」は同じクエリーで同時使用できない


    // 日付
    'year' => 2014,     // (int) - 4桁の年 (例 2017)
    'monthnum' => 4,    // (int) - 月(1から12)
    'day' => 17,        // (int) - 日(1から31)
    'm' => 201404,      // (int) - 年月指定


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


    // タクソノミー
    'tax_query' => array(  // (array) - タクソノミー指定する
      'relation' => 'AND', // (string) - 複数タクソノミーの論理演算子
                           // 'AND' - 複数タクソノミーすべてに一致した投稿を表示
                           // 'OR' - 複数タクソノミーのいずれかに一致した投稿を表示
      array(
        'taxonomy' => 'taxonomy-slug1',       // (string) - スラッグ:対象タクソノミーを指定
        'field' => 'slug',                    // (string) - IDかスラッグのどちらでタクソノミー項目を指定するか
        'terms' => array('pickup', 'notice'), // (int/string/array) - タクソノミー項目
        'include_children' => true,           // (bool) - 子タクソノミーを対象とするか
                                              // true(初期値) - 子タクソノミーを含める
                                              // false - 子タクソノミーを含めない
        'operator' => 'IN'                    // (string) - termsで複数指定時の論理演算子
                                              // 'IN' - 指定termsのいずれかに一致している投稿を表示(or)
                                              // 'AND' - 指定termsのすべてが一致している投稿を表示(and)
                                              // 'NOT IN' - 指定terms以外の投稿を表示
      ),
      array(
        'taxonomy' => 'taxonomy-slug2',
        'field' => 'id',
        'terms' => array(1, 3, 5),
        'include_children' => false,
        'operator' => 'NOT IN'
      )
    ),

);
?>