Wp_reset_postdataの使い方を理解できません。使用していないとどうなりますか。
https://codex.wordpress.org/Function_Reference/wp_reset_postdata
ここのドキュメントでは、メインクエリとセカンダリクエリは何ですか?
ありがとう
WordPressはグローバル$post
変数を使用しています。こうすれば、postやpost_IDを関数のパラメータとして渡す必要がなくなります。それでthe_title()
を呼び出すことができ、WPはどのタイトルが表示されるべきかを知っています。
サイト上にループが1つしかない場合は、この動作はうまくいきます。しかし、もしあなたがあなた自身のカスタムループを作成してそれらを繰り返すなら、あなたはグローバルな$post
変数を修正します...
いくつかのサンプルを見てみましょう。これが記事 "News 01"のsingle.phpだとしましょう:
...
while ( have_posts() ) : the_post();
?>
<h1><?php the_title(); // it will show News 01 ?></h1>
<?php the_content(); // it will show its content ?>
<?php
$related = new WP_Query( ... );
while ( $related->have_posts() ) : $related->the_post();
?>
<article>
<h2><?php the_title(); // it will show other title ?></h2>
</article>
<?php endwhile; ?>
<?php the_category(); // what will that show? categories for which post? ?>
最後の行には、最後の関連投稿のカテゴリが表示されます。どうして?これがグローバル$post
変数がに設定されている投稿です。
しかし、endwhile
の後にwp_reset_postdata();
を呼び出すと、グローバル$post
をグローバル$wp_query
オブジェクトからポストに戻すように設定されるので、すべてうまくいきます。