WordPress

【サブループ】条件を指定した変数を引数に渡す手順を解説

どうも、フリーランスエンジニアのもさくです。

前回下記の記事でサブループの作り方を結構詳しく解説したと思うのですが、

今日はサブループを作成するときに、条件を指定した変数を引数に渡す手順を解説します。

前回紹介した記事の書き方と少し異なりますので、この変数を引数に渡す手順も覚えておきましょう。

まずはサブループを作ります

<?php
$args = array(
  'post_type' => 'news', //カスタム投稿タイプを指定
  'taxonomy' => 'news_category', //カスタムタクソノミーを指定
  'posts_per_page' => 5, //表示する記事数
);
$news_query = new WP_Query( $args ); //サブループを変数に格納
if ( $news_query->have_posts() ) : 
  while ( $news_query->have_posts() ) : 
    $news_query->the_post(); 
?>

<!-- ここにhtml -->

<?php endwhile;
endif;
wp_reset_postdata(); //サブループを抜ける
?>

サブループはメインループに表示できない、特定のカテゴリーの記事一覧や特定の条件を指定した記事一覧を表示するんでしたね。

$argsには表示する記事の条件を、arrayを使って配列で指定しています。

ここにサブループでどんな記事を表示するか全て決めています。

上記のコードでは、

  • カスタム投稿タイプが「news」('post_type' => 'news'
  • カスタムタクソノミーが「news_category」('taxonomy' => 'news_category'
  • 記事を5件('posts_per_page' => 5)表示

という記述がされています。

プロパティは種類が豊富なので、下記に公式サイトを添付しましたので、そちらからご覧ください。

WordPress Codex 日本語版 → 関数リファレンス/paginate links – WordPress Codex 日本語版

今日の本題!条件を指定した変数を引数に渡すパート

$news_query = new WP_Query( $args ); //サブループを変数に格納
if ( $news_query->have_posts() ) : 
  while ( $news_query->have_posts() ) : 
    $news_query->the_post();

条件を指定した変数$argsnew WP_Query()の引数に渡すことでサブループを作成します。

作ったサブループは変数に格納しましょう。

この変数からループ処理をし、メインループと同じ処理の容量ですが、

この変数からループ処理をし、メインループと同じ処理の容量ですが、$news_query->have_posts()というように記述するよう注意してください。

前回の記事より、少し書き方がスマートになりましたね。

条件指定の変数を、引数として渡す手順はたったこれだけです。ここで固めておきましょう。

ループ処理の最後には、wp_reset_postdata()

<?php endwhile;
endif;
wp_reset_postdata(); //サブループを抜ける
?>

ループ処理の最後には、前回もやったお馴染みの記述ですね。

wp_reset_postdata()を書くのを忘れないようにしてください!

サブループが終わったらループの条件などをリセットする記述です。

これで完成。

今日は、ピンポイントに絞った条件を指定した変数を引数に渡す手順を解説しました。

変数$argsnew WP_Query()の引数に渡すことでサブループが作れるんでしたね!

この書き方も是非マスターしちゃいましょう!では。