wp_reset_query()


関数 WordPresswp_reset_query()は、クエリの状態をリセットし、デフォルトのメインクエリに戻すために使用されます。

シンタックス

wp_reset_query();

説明

wp_reset_query()は、メインのクエリがカスタムクエリによって変更された場合に、デフォルトのクエリにリセットするための関数です。通常、query_posts()の後に呼び出されます。

使用例 1: メインクエリをリセットする

query_posts()で変更されたメインクエリをリセットするコードです。

<?php
query_posts( 'cat=3' );
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        the_title();
    }
}
wp_reset_query();
?>

使用例 2: カスタムクエリ後にメインクエリに戻す

カスタムクエリを実行し、その後メインクエリに戻すコードです。

<?php
query_posts( array( 'post_type' => 'custom_type' ) );
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        the_title();
    }
}
wp_reset_query();
?>

使用例 3: クエリ変更後にデフォルトの状態を保つ

複数のquery_posts()呼び出し後に、デフォルトクエリに戻す場合です。

<?php
query_posts( 'cat=5' );
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        the_title();
    }
}
wp_reset_query();

query_posts( 'tag=example' );
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        the_title();
    }
}
wp_reset_query();
?>

使用例 4: サブループ後にメインループを維持する

サブループで変更されたクエリをリセットし、メインループを維持します。

<?php
global $wp_query;
$original_query = $wp_query;

$args = array( 'posts_per_page' => 3 );
query_posts( $args );

if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        the_title();
    }
}
$wp_query = $original_query;
wp_reset_query();
?>

注意事項

  • query_posts()を使用する場合、必ずwp_reset_query()を呼び出して、クエリの状態をリセットしてください。
  • 複数のクエリが混在する場合、デフォルトのメインクエリに戻さないと表示結果が予期しないものになる可能性があります。

関連機能: