• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

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

提供: WordPress Codex 日本語版
移動先: 案内検索
(最新版のマージ 151905}}<!-- 12:33, 3 June 2015‎ TJNowell -->)
(残りを和訳。用例のPHPコードの後半が丸ごと冗長なので削除。)
 
1行目: 1行目:
 
==説明==
 
==説明==
wp_reset_query() は $wp_query とグローバルなポストデータを元のメインクエリーのものに復帰させます。この関数は query_posts() の後で使用されるべきです。
 
  
, it's heavily encouraged to use the pre_get_posts filter to alter query parameters before the query is made.
+
wp_reset_query() は $wp_query とグローバルな投稿データを元のメインクエリのものに復帰させます。[[テンプレートタグ/query posts|query_posts()]] をどうしても使わなければならない場合、その後にこの関数を呼び出すべきです。
  
Calling wp_reset_query is not necessary after using WP_Query or get_posts as these don't modify the main query object. Instead use [[wp_reset_postdata]] /[[:en:wp_reset_postdata|en]]
+
'''重要:下記の例で説明するように、[[プラグイン 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>
23行目: 29行目:
  
 
$args = array ( 'post_parent' => 5 );
 
$args = array ( 'post_parent' => 5 );
query_posts( $args );
+
query_posts( $args ); // この呼び出しでメインクエリが上書きされる
  
if ( have_posts() ):
+
if ( have_posts() ): // カスタムループ開始
 
     while ( have_posts() ) :
 
     while ( have_posts() ) :
 
         the_post();
 
         the_post();
31行目: 37行目:
 
         // 投稿コンテンツの処理
 
         // 投稿コンテンツの処理
 
         the_title();
 
         the_title();
         the_permalink(); //その他処理
+
         the_permalink(); // など…
  
 
     endwhile;
 
     endwhile;
 
else:
 
else:
     // コンテンツ、または、投稿がない場合のテンプレートの挿入
+
     // 投稿がない場合のコンテンツやテンプレートの挿入
endif;
+
endif; // カスタムループ終了
  
wp_reset_query();
+
wp_reset_query(); // メインループのクエリへ復帰
  
 
?>
 
?>
 
</pre>
 
</pre>
  
'''query_posts() はメインクエリーを置き換えてしまうため以下の方法は推奨されません。''どうしても必要な場合にのみ''使うようにしてください([[テンプレートタグ/query posts#注意|query_posts の注意点]])。'''二次的なループには、[[関数リファレンス/WP_Query|WP_Query]] の新しいインスタンス、または、[[テンプレートタグ/get posts|get_posts()]] を使用してください。メインクエリーを修正したい場合は [[プラグイン_API/アクションフック一覧/pre_get_posts|pre_get_posts]] アクションを利用してください。Be sure to put your pre_get_posts filtering in your functions.php file.
+
==変更履歴==
 
+
<pre>
+
<?php
+
query_posts( 'post_parent=5' );
+
if ( have_posts() ) :
+
while ( have_posts() ) : the_post();
+
?><a href="<?php the_permalink() ?>"><?php the_title() ?></a><br /><?php
+
endwhile;
+
endif;
+
wp_reset_query();
+
?>
+
</pre>
+
 
+
==更新履歴==
+
  
 
* 新規導入: [[Version 2.3|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}}
73行目: 63行目:
 
{{Tag Footer}}
 
{{Tag Footer}}
  
{{NeedTrans|一部}}
+
{{原文|Function Reference/wp reset query|151905}} <!-- 12:33, 3 June 2015 TJNowell -->
  
{{DEFAULTSORT:WP reset query}}
+
{{DEFAULTSORT:Wp_reset_query}}
 +
[[Category:関数]]
  
{{原文|Function Reference/wp reset query|151905}}<!-- 12:33, 3 June 2015‎ TJNowell  -->
+
[[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最新版との差分