0%

Programmingプログラミングナレッジ

Posted:2016.04.27

条件指定して記事を表示させるサブループのWP Queryパラメータ指定方法まとめ

WordPressにおいて投稿記事を表示させる時にはループを使いますが、パラメータに引数を入れることにより、いろいろな条件で絞り込んで表示することができます。今回はメインループとは別のサブループで用いるWP Queryについて、用途別にパラメータの指定方法についてまとめてみました。

 

基本的なサブループ(WP Query)の書き方は次の通りになります。

 

<?php
  $args = array(
    //変数にパラメータを指定
  );
  $the_query = new WP_Query( $args ); //サブループにパラメータを適用
  if ( $the_query->have_posts() ) : //記事があるか無いかの判別
  while ( $the_query->have_posts() ) : $the_query->the_post();
?>
    //ループの部分(記事がある時の表示内容)
<?php endwhile; ?>
<?php else: ?>
    //記事がない時の表示内容
<?php endif; ?> //ループの終了
<?php
  wp_reset_postdata(); //ループの設定をリセット
?>

 

上記コードに登場する最初の変数である$argsにパラメータを指定することで、ループの設定をすることができます。

 

カテゴリー・タグに関する指定

カテゴリーのパラメータ指定

'cat' => 7
//カテゴリーIDで指定

'category_name' => 'slug001, slug002'
//論理和:カテゴリースラッグで指定

'category__in' => array( 3, 8 )
//論理和:カテゴリーIDで指定

'category_name' => 'slug001+slug002'
//論理積:カテゴリースラッグで指定

'category__and' => array( 3, 8 )
//論理積:カテゴリーIDで指定

'category__not_in' => array( 3, 8 )  
//否定論理和:カテゴリーIDで指定

 

タグのパラメータ指定

'tag' => 'slug001'
//タグスラッグで指定

'tag_id' => 7
//タグIDで指定

'tag__in' => array( 4, 8)
//論理和:タグIDで指定

'tag_slug__in' => array( 'slug001', 'slug002')
//論理和:タグスラッグで指定

'tag__and' => array( 4, 8)
//論理積:タグIDで指定

'tag_slug__and' => array( 'slug001', 'slug002')
//論理積:タグスラッグで指定

'tag__not_in' => array( 4, 8)
//否定論理和:タグIDで指定

 

著者・日付に関する指定

著者のパラメータ指定

'author' => '2,6,9'
//著者IDで指定

'author_name' => 'user_nicename001'
//著者nicenameで指定

'author__in' => array( 2,6,9 )
//論理和:著者IDで指定

'author__not_in' => array( 2,6,9 )
//否定論理和:著者IDで指定

 

日付のパラメータ指定

'year' => 2016
//西暦を4桁で指定

'monthnum' => 12
//月を指定

'm' => 201604
//西暦と月を指定

 

カスタム分類・カスタムフィールドに関する指定

タクソノミーのパラメータ指定

//単一のタクソノミーを指定
'tax_query' => array(
    array(
        'taxonomy' => 'taxonomy100',                  //タクソノミー(カスタム分類)を指定
        'field' => 'slug',                        //先述の指定方法をスラッグに
        'terms' => array( 'terms101', 'terms102' ),    //指定したタクソノミーが持つターム名
        'include_children' => true,                    //子孫タクソノミーを持つ場合に含めるかどうか(初期値はtrue)
        'operator' => 'IN'                      //演算子の指定(初期値はIN、'IN' 'NOT IN' 'AND'が使用可能)
    )
)

//複数のタクソノミーを指定
'tax_query' => array(
'relation' => 'AND',                        //複数のタクソノミーを扱う場合の指定(AND、OR)
    array(
        'taxonomy' => 'taxonomy100',         
        'field' => 'slug',                              
        'terms' => array( 'terms101', 'terms102' ),     
        'include_children' => true,                           
        'operator' => 'IN'                  
    ),                               //カンマでつなげて記述する
    array(
        'taxonomy' => 'taxonomy200',         
        'field' => 'slug',                              
        'terms' => array( 'terms203', 'terms206' ),     
        'include_children' => false,                           
        'operator' => 'NOT IN'                  
    )
)

 

カスタムフィールドのパラメータ指定

'meta_key' => 'key'
//カスタムフィールドのキー名で指定

'meta_value' => 'value'
//カスタムフィールドの属性値名で指定

'meta_value_num' => 18
//カスタムフィールドの属性数値で指定

 

その他パラメータ指定
'p' => 48
//投稿記事のIDで指定

'name' => 'slug-post001'
//投稿記事のスラッグで指定

'page_id' => 5
//固定ページのIDで指定

'pagename' => 'slug-page001'
//固定ページのスラッグで指定

//投稿タイプの種類やページの状態に関するパラメータ
'post_type' => array( 
    'post',                       //通常の投稿
    'page',                                      //固定ページ
    'custom-post-type-slug',                     //カスタム投稿タイプ(スラッグで指定)
)
'posts_per_page' => 15
//1ページあたりの投稿記事表示数(-1で全ての記事を表示させる)

'paged' => get_query_var('page')
//サブループ内でのページネーションを有効にする

'order' => 'ASC'
//属性値の昇順で指定

'order' => 'DESC'
//属性値の昇順で指定

'orderby' => 'date'
//日付などの条件指定で並び替える

 

その他にもいろいろなパラメータを設定することができます。

これらのパラメータを実際にサブループ内で指定すると次のようになります。

 

【PHP】

<?php
  $args = array(
  'posts_per_page' => 15
    'post_type' => 'post',
    'tax_query' => array(
        array(
            'taxonomy' => 'taxonomy-100',
            'field'    => 'slug',
            'terms'    => 'term-101',
        ),
    ),
  );
  $the_query = new WP_Query( $args );
  if ( $the_query->have_posts() ) :
  while ( $the_query->have_posts() ) : $the_query->the_post();
?>
    //コンテンツ
<?php endwhile; ?>
<?php else: ?>
    <p>記事がありません</p>
<?php endif; ?>
<?php
  wp_reset_postdata();
?>

上記では、通常投稿のカスタム分類「taxonomy-100(スラッグ名)」に属する、ターム(=カテゴリーもしくはタグ)名「term-101」が関連付けられた記事をページ内に15記事分表示させます。

 

author
この記事を書いた人オガワ シンヤ
FacebookTwitter

DesignSupply.代表 / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はチョコレートが欠かせない三十路Webクリエイター。

制作のご依頼やお問い合わせ・パートナー業務提携のご相談はこちら

デザインやウェブ制作についてのご依頼やご相談、その他お問い合わせなどもお気軽にご連絡ください。フットワークの軽さやレスポンスの早さ、また豊富な経験や知識、技術を活かした対応力といったフリーランスクリエイターの強みでクライアント様、パートナー企業様のお力になります。デザインからコーディングやWordPress実装といったウェブサイト構築はもちろん、写真撮影や動画編集、コンテンツ制作からサイト運用サポートまで一括してお任せください。

ホームページ制作のご検討やウェブ運用でお悩みの経営者様や企業のウェブ担当者様をはじめ、個人で店舗を営んでいらっしゃるオーナー様、フリーで活動されているビジネスオーナー様はもちろんのこと、リソース不足でお困りの制作会社様、またクリエイターをお探しの代理店様も大歓迎です。

コンタクトをご希望の方はお手数ですが、下記よりお問い合わせフォームのページへアクセスしていただき、必要事項を入力の上メッセージを送信してください。確認でき次第すぐに折り返しご連絡致します。

こんな記事も読まれています

コメントもお気軽にどうぞ

記事に関するご質問やご意見などありましたら下記のコメントフォームよりお気軽に投稿ください。なおメールアドレスは公開されませんのでご安心ください。また、* が付いている欄は必須項目となります。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

CAPTCHA


ページトップへ
大阪市天王寺区のホームページ制作デザイン事務所(SOHO)DesignSupply.【デザインサプライ】