【WordPress】様々なループ編(その2:サブループを使った応用)

ロッチくん
ロッチくん

サブループを使って色々なループを実装したいニャン

前回メインループとサブループについて解説しました。

メインループはWordPressがデフォルトで用意してくれているループであり、テンプレートファイルに応じて決められたループを引っ張ってきてくれるものなので意外と応用がききません。テンプレートファイル外でも様々にループを使いたいことが出てきたときはサブループを使って実装することになります。

サブループを使った応用

関連記事のループを表示

よくブログ投稿などである、その投稿に関連する投稿を一覧で吐き出すループをサブループで実装してみましょう。

コード

<?php
$categories = get_the_category($post->ID); // 現在の投稿のカテゴリーを取得
$category_ID = []; // カテゴリーIDを格納するための空の配列を用意

foreach ($categories as $category) :
    array_push($category_ID, $category->cat_ID); // 用意した空配列にカテゴリーIDを格納
endforeach;

$args = [
    'post_type' => 'post', // 投稿タイプを指定
    'posts_per_page' => '5', // 表示する記事数を指定
    'category__in' => $category_ID, // カテゴリーIDを指定
    'post__not_in' => [$post->ID], // 現在の投稿を除外
    'orderby' => 'rand' // ランダムに表示
];

$related_query = new WP_Query($args);
if ($related_query->have_posts()) :
?>
    <?php while ($related_query->have_posts()) : related_query->the_post(); ?>
    <!-- ここに関連記事を表示 -->
    <?php endwhile; ?>
<?php else : ?>
    <p>関連記事はありません。</p>
<?php
endif;
wp_reset_postdata(); ?>

おすすめ記事のループ表示

こちらもまたよくブログ投稿サイトのサイドバーなどで見られるループです。

コード

<?php
$custom_posts = new WP_Query(['tag' => 'pickup']);
if ($custom_posts->have_posts()) :
    while ($custom_posts->have_posts()) : $custom_posts->the_post(); ?>
        <!-- おすすめの記事を表示 -->
    <?php endwhile; ?>
<?php else : ?>
    <p>おすすめの記事はありません。</p>
<?php
endif;
wp_reset_postdata(); ?>

おすすめしたい記事に「pickup」というタグをつけて、「pickup」というタグが付いている投稿のみを抽出してループさせています。

両方とも汎用性が高いループですので是非覚えておきましょう!

コメント

タイトルとURLをコピーしました