サクッと動くWordPressの小技集。今回は「メインループとは別のサブループを作る」に挑戦してみます。

普通のループ

いわゆる普通に使うループは

<?php if(have_posts()): while(have_posts()): the_post(); ?>

// 内容

<?php endwhile; endif; ?>

これで良いですが、例えばカスタム投稿タイプ用のループを作ったりする時はメインループだけでは困ってしまう時があります。

サブループを作ってみる

そこで、メインループとは別にサブループを作る必要がある時は下記!!

<?php
  $args = array(
    'post_type' => 'post', // カスタム投稿の場合はここをカスタム投稿名にすればOK
    'posts_per_page' => 4 // 記事をいくつ表示するか
  );
  $myposts = new WP_Query($args);

  if($myposts->have_posts()): while($myposts->have_posts()): $myposts->the_post();
?>

// 内容

<?php
  endwhile; endif;
  wp_reset_postdata();
?>

といった感じで、WP_Query()として渡してあげて、最後にwp_reset_postdata()でループ解除?ループを他に影響させないようにリセットしてあげればOK!!
$argsは通常と同じオプションが利用できます!

ちなみに固定ページなどで記事一覧を出力する場合は、

<?php
  $paged = get_query_var('paged')? get_query_var('paged') : 1; // ←これ追加
  $args = array(
    'post_type' => 'post',
    'posts_per_page' => 4,
    'paged' => $paged, // ←これ追加
  );
  $myposts = new WP_Query($args);

  if($myposts->have_posts()): while($myposts->have_posts()): $myposts->the_post();
?>

// 内容

<?php
  endwhile; endif;
  wp_reset_postdata();
?>

といった感じで大丈夫かと。

こんな感じでサクッとサブループを作成することが出来ました。
以上、WordPress小技集–メインループとは別のサブループを作る–でしたっ!!