WEB制作のための情報サイト / unazuki Library

wp_reset_postdata()

基本構文と使い方(引数・実行結果)

基本構文

グローバルオブジェクト$postをリセットしてメインクエリの現在の記事に戻します。サブクエリによって上書きされたグローバルオブジェクトをメインクエリに戻すときに使われます。

wp_reset_postdata();

引数

なし。

実行結果

グローバルオブジェクト$postをメインクエリの現在の記事に戻します。

学習者向け補足情報

【引数とは】
テンプレートタグ(=関数)を実行する際に、引数を渡すことができるテンプレートタグがあります。引数は、関数の中で使われるので、渡す引数の値によって実行結果が変わってきます。何を処理したいのか、どのようなデータを取得したいのかによって渡す引数が変わります。

【引数について】

  • 指定できる引数の数はテンプレートタグによって異なります。(引数なしもあり)
  • 引数ごとに必須 / 任意が決まっています。(必須は必ず指定、任意は指定しなければ初期値)
  • 引数名(例:$post)は仕様の便宜上の名前と考えてください。(この名前自体はテンプレートタグ実行に関係しません。各引数に何を指定するのかを理解していればOKです。)

参考コード

下記コードはサブクエリのループを抜けたあと(while文の終了後)、グローバルオブジェクト$postをリセットしてメインクエリの現在の記事に戻しています。リセットしなかった場合、グローバルオブジェクト$postがサブクエリのままのため、その後のプログラム実行内容に影響を与える可能性があります。

<?php
$args = [
	'post_type' => 'post',
	'posts_per_page' => 5,
];
$the_query = new WP_Query($args); // サブクエリを発行
?>
<?php if ($the_query->have_posts()): ?>
	<?php while ($the_query->have_posts()): // サブクエリループ ?>
		<?php $the_query->the_post(); ?>
		<a href="<?php the_permalink(); ?>">
			<?php the_title(); ?>
		</a>
	<?php endwhile; ?>
	<?php wp_reset_postdata(); // $postをメインクエリに戻す ?>
<?php else: ?>
	<!-- 投稿が無い場合の内容 -->
<?php endif; ?>

※当サイトでは初期値とデフォルト値の言葉の定義を区別せず、原則統一して初期値を採用しています。

関連するテンプレートタグ

テンプレートタグ 説明
get_search_query() 検索キーワードを取得する。
get_post_type() 記事が所属する投稿タイプの名前を返す。
get_queried_object_id() 現在のクエリ(DBへの問い合わせ条件)に関するオブジェクトのIDを返す。
get_queried_object() 現在のクエリ(DBへの問い合わせ条件)に関するオブジェクトを返します。
the_posts_pagination() アーカイブページ(記事一覧ページ)にてページネーションを表示します。
get_the_posts_pagination() アーカイブページ(記事一覧ページ)にて利用可能なページネーションを取得します。
get_posts() 指定した条件にマッチする記事オブジェクトの配列を取得する。
get_post() 指定した投稿情報を取得する。
the_post() 処理対象の記事をセットします。
have_posts() 記事が存在するかどうか調べて真偽値を返します。