rewind_posts()


WordPressのrewind_posts()関数は、カスタムクエリやメインループ内で使用される投稿データをリセットし、ループの最初に戻すために使用されます。これにより、同じ投稿データを再度ループ処理することが可能です。

構文

rewind_posts();

例1: 基本的な使用例

この例では、ループ内でrewind_posts()を使用して、投稿データをリセットし、再度ループ処理を行います。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); the_title(); endwhile; rewind_posts(); while ( have_posts() ) : the_post(); the_content(); endwhile; endif; ?>

例2: カスタムクエリでの使用

カスタムクエリを使用して投稿を取得し、rewind_posts()でループをリセットします。

<?php $custom_query = new WP_Query( 'cat=3' ); if ( $custom_query->have_posts() ) : while ( $custom_query->have_posts() ) : $custom_query->the_post(); the_title(); endwhile; rewind_posts(); while ( $custom_query->have_posts() ) : $custom_query->the_post(); the_content(); endwhile; endif; wp_reset_postdata(); ?>

例3: メインループとカスタムクエリの併用

メインループとカスタムクエリを併用し、rewind_posts()でそれぞれのループをリセットします。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); the_title(); endwhile; rewind_posts(); endif; $custom_query = new WP_Query( 'cat=5' ); if ( $custom_query->have_posts() ) : while ( $custom_query->have_posts() ) : $custom_query->the_post(); the_title(); endwhile; rewind_posts(); endif; ?>

例4: ループ内での条件分岐

ループ内で条件分岐を行い、特定の条件下でrewind_posts()を実行します。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); if ( get_the_ID() == 10 ) { rewind_posts(); } the_title(); endwhile; endif; ?>

例5: 無限ループの防止

rewind_posts()を使用して無限ループを防止する例です。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); the_title(); if ( get_the_ID() == 15 ) { rewind_posts(); break; } endwhile; endif; ?>

例6: カスタムフィールドとの併用

カスタムフィールドを使用して特定の条件でrewind_posts()を実行します。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); if ( get_post_meta( get_the_ID(), 'custom_field', true ) == 'value' ) { rewind_posts(); } the_title(); endwhile; endif; ?>

例7: 複数のループ処理

複数のループ処理を行い、rewind_posts()でそれぞれのループをリセットします。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); the_title(); endwhile; rewind_posts(); while ( have_posts() ) : the_post(); the_content(); endwhile; endif; ?>

例8: カテゴリ別のループ処理

カテゴリ別にループ処理を行い、rewind_posts()でループをリセットします。

<?php $category_query = new WP_Query( 'category_name=news' ); if ( $category_query->have_posts() ) : while ( $category_query->have_posts() ) : $category_query->the_post(); the_title(); endwhile; rewind_posts(); while ( $category_query->have_posts() ) : $category_query->the_post(); the_content(); endwhile; endif; wp_reset_postdata(); ?>

注意点

  • rewind_posts()は、メインループやカスタムクエリのループ内で使用する必要があります。
  • 無限ループを引き起こす可能性があるため、条件分岐と併用することを推奨します。
  • カスタムクエリを使用する場合、wp_reset_postdata()を忘れずに呼び出してください。

関連機能: