当サイト、Codex 日本語版は今後積極的な更新は行わない予定です。後継となる新ユーザーマニュアルは、https://ja.wordpress.org/support/ にあります。
万が一、当サイトで重大な問題を発見した際などは、フォーラムWordSlack #docs チャンネルでお知らせください。</p>

「関数リファレンス/wp reset query」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(わかりやすい日本語に修正)
(残りを和訳。用例のPHPコードの後半が丸ごと冗長なので削除。)
 
(3人の利用者による、間の12版が非表示)
1行目: 1行目:
{{NeedTrans}}
 
 
==説明==
 
==説明==
この関数は、[[The Loop|WordPress ループ]] を <tt>query_posts()</tt> で変更したカスタムループのクエリをリセットし、元の [[The Loop|WordPress ループ]] のクエリに戻します。カスタムループの後では、条件分岐タグを期待通りに動作させるために、必ずこの関数を呼び出してください。
+
 
 +
wp_reset_query() は $wp_query とグローバルな投稿データを元のメインクエリのものに復帰させます。[[テンプレートタグ/query posts|query_posts()]] をどうしても使わなければならない場合、その後にこの関数を呼び出すべきです。
 +
 
 +
'''重要:下記の例で説明するように、[[プラグイン API/アクションフック一覧/pre get posts|pre_get_posts]] アクションの使用を強く推奨します。これはクエリが実行される前にクエリのパラメータを変更することができます。'''
 +
 
 +
[[クラスリファレンス/WP Query|WP_Query]] や [[テンプレートタグ/get posts|get_posts()]] の使用後に wp_reset_query() を呼び出す必要はありません。これらはメインクエリのオブジェクトを変更しないからですが、代わりに [[関数リファレンス/wp reset postdata|wp_reset_postdata()]] を呼び出してください。
  
 
==使い方==
 
==使い方==
 +
 
  <?php wp_reset_query(); ?>
 
  <?php wp_reset_query(); ?>
  
 
==パラメータ==
 
==パラメータ==
 +
 
この関数にはパラメータがありません。
 
この関数にはパラメータがありません。
  
 
==戻り値==
 
==戻り値==
 +
 
この関数には戻り値がありません。
 
この関数には戻り値がありません。
  
 
==用例==
 
==用例==
カスタムループの後で wp_reset_query() を使用している例です。
+
 
 +
'''query_posts() はメインクエリを置き換えてしまうため、利用は推奨されません。''どうしても必要な場合にのみ''使うようにしてください([[テンプレートタグ/query posts#注意|query_posts の注意点]])。'''二次的なループには、[[クラスリファレンス/WP_Query|WP_Query]] の新しいインスタンスまたは [[テンプレートタグ/get posts|get_posts()]] を使用してください。メインクエリを修正したい場合は [[プラグイン_API/アクションフック一覧/pre_get_posts|pre_get_posts]] アクションを利用してください。pre_get_posts アクション用のコードは functions.php ファイルへ記述してください。
 +
 
 +
カスタムループの後で wp_reset_query() を使う例です。例に出てくるループはメインループに追加して行われることに注意してください。
 +
 
 
<pre>
 
<pre>
<?php  
+
<?php
query_posts('showposts=5');
+
 
if (have_posts()) : while (have_posts()) : the_post();
+
$args = array ( 'post_parent' => 5 );
?><a href="<?php the_permalink() ?>"><?php the_title() ?></a><br /><?php
+
query_posts( $args );  // この呼び出しでメインクエリが上書きされる
endwhile; endif;
+
 
wp_reset_query();
+
if ( have_posts() ): // カスタムループ開始
 +
    while ( have_posts() ) :
 +
        the_post();
 +
 
 +
        // 投稿コンテンツの処理
 +
        the_title();
 +
        the_permalink()// など…
 +
 
 +
    endwhile;
 +
else:
 +
    // 投稿がない場合のコンテンツやテンプレートの挿入
 +
endif; // カスタムループ終了
 +
 
 +
wp_reset_query(); // メインループのクエリへ復帰
 +
 
 
?>
 
?>
 
</pre>
 
</pre>
  
==更新履歴==
+
==変更履歴==
2.3.0 で導入
+
 
 +
* 新規導入: [[Version 2.3|2.3.0]]
  
 
==ソースファイル==
 
==ソースファイル==
<!-- Need links to current source code files -->
+
 
 
<tt>wp_reset_query()</tt> は {{Trac|wp-includes/query.php}} にあります。
 
<tt>wp_reset_query()</tt> は {{Trac|wp-includes/query.php}} にあります。
  
==関連==
+
==関連項目==
  
 
{{Query Tags}}
 
{{Query Tags}}
{{原文|Template Tags/wp_reset_query|82777}}<!-- 22:46, 6 February 2010 Ramiy 版 -->
+
 
 
{{Tag Footer}}
 
{{Tag Footer}}
  
{{DEFAULTSORT:WP reset query}}
+
{{原文|Function Reference/wp reset query|151905}} <!-- 12:33, 3 June 2015 TJNowell -->
[[Category:Functions]]
+
 
 +
{{DEFAULTSORT:Wp_reset_query}}
 +
[[Category:関数]]
 +
 
 +
[[en:Function Reference/wp reset query]]
 +
[[it:Riferimento funzioni/wp reset query]]

2015年9月5日 (土) 21:14時点における最新版

説明

wp_reset_query() は $wp_query とグローバルな投稿データを元のメインクエリのものに復帰させます。query_posts() をどうしても使わなければならない場合、その後にこの関数を呼び出すべきです。

重要:下記の例で説明するように、pre_get_posts アクションの使用を強く推奨します。これはクエリが実行される前にクエリのパラメータを変更することができます。

WP_Queryget_posts() の使用後に wp_reset_query() を呼び出す必要はありません。これらはメインクエリのオブジェクトを変更しないからですが、代わりに wp_reset_postdata() を呼び出してください。

使い方

<?php wp_reset_query(); ?>

パラメータ

この関数にはパラメータがありません。

戻り値

この関数には戻り値がありません。

用例

query_posts() はメインクエリを置き換えてしまうため、利用は推奨されません。どうしても必要な場合にのみ使うようにしてください(query_posts の注意点)。二次的なループには、WP_Query の新しいインスタンスまたは get_posts() を使用してください。メインクエリを修正したい場合は pre_get_posts アクションを利用してください。pre_get_posts アクション用のコードは functions.php ファイルへ記述してください。

カスタムループの後で wp_reset_query() を使う例です。例に出てくるループはメインループに追加して行われることに注意してください。

<?php

$args = array ( 'post_parent' => 5 );
query_posts( $args );  // この呼び出しでメインクエリが上書きされる

if ( have_posts() ):  // カスタムループ開始
    while ( have_posts() ) :
        the_post();

        // 投稿コンテンツの処理
        the_title();
        the_permalink();  // など…

    endwhile;
else:
    // 投稿がない場合のコンテンツやテンプレートの挿入
endif;  // カスタムループ終了

wp_reset_query();  // メインループのクエリへ復帰

?>

変更履歴

ソースファイル

wp_reset_query()wp-includes/query.php にあります。

関連項目

記事

コード・ドキュメンテーション

  • クラス: WP_Query - WP_Query クラスの詳細な全容
  • クラス: WP_Comment_Query - コメント関連のクエリのためのクラス
  • クラス: WP_User_Query - ユーザー関連のクエリのためのクラス
  • オブジェクト: $wpdb - $wpdb オブジェクトの使い方全容
  • 関数: set_query_var()
  • 関数: get_query_var()
  • 関数: query_posts() - 追加のカスタムクエリを作成
  • 関数: get_post() - 項目の ID を取得しデータベース内にあるその投稿のレコードを返す
  • 関数: get_posts() - 投稿の配列を返すことに特化した関数
  • 関数: get_pages() - ページの配列を返すことに特化した関数
  • 関数: have posts() - クエリが投稿を返すか否かを判断する条件関数
  • 関数: the_post() - クエリ後に自動的にループを設定する
  • 関数: rewind_posts() - 現状のループをリセットする
  • 関数: setup_postdata() - ループ内で個別の結果を得るためのクエリデータを設定する
  • 関数: wp_reset_postdata() - 直前のクエリを復元する (通常はループ内の別のループの後に用いられる)
  • 関数: wp_reset_query()
  • 関数: is_main_query() - 変更されるクエリがメインのクエリであることを確認する
  • アクションフック: pre_get_posts - WordPressクエリが実行される前に変更する
  • アクションフック: the_post - post クエリの後で post オブジェクトを変更する
  • フィルターフック: found_posts - WP_Query オブジェクトの found_posts 値を変更する


関数リファレンステンプレートタグ目次もご覧ください。


最新英語版: WordPress Codex » Function Reference/wp reset query最新版との差分