質問: new wp_query(); $inner_query->query('showposts=3'); ?> <?php while ($inner_query->have_posts()) : $inner_query->the_post(); $post=$backup; ?> <?php the_post_thumbnail(); ?> <p><?php echo ''.get_the_custom_excerpt(); ?>...</p> <a href="<?php the_permalink() ?>">read it</a> <?php endwhile; ?>
回答: wp_queryオブジェクトをもっと作成することで、好きなだけループをいくつでも作成できます。$query = new wp_query($args); while ($query->have_posts()) : // initialization for $inner_args & backup the current global $post $inner_query = new wp_query($inner_args); while ($inner_query->have_posts()) : // do something endwhile; // restore the global $post from the previously created backup endwhile; 要求された説明the_title();などのテンプレートタグを呼び出すと、ループ内の現在の投稿に関する情報が表示されます。しかし、どの投稿がどの投稿が現在の投稿であるかをどうやって知るのでしょうか。これは、グローバルポストデータ(グローバル変数$postに格納されている)から情報を読み取ることによって行われます。ループを使用するときは、常に最初のステートメントとして$query->the_post()を使用します。この関数がすることは、そのグローバルデータをwp_queryオブジェクトから次の投稿に設定することです(前の内容は失われます)ここで内側のループを呼び出したとき、内側のループが機能し始めたときに外側のループに関連するpostdataが失われていました。それで、内側のループの終わりの後にあなたが使うどんな関数でも、内側のループのデータだけを見つけています。このソリューションでは、内容が失われる前に、まず外側のループのデータを別の変数に保存しました。そうすると、ループは想定どおりに機能します(すべての外側のループデータを削除します)。次に、内側のループの作業が完了したら、外側のループのデータを使用する必要がありますが、内側のループのためにデータが失われています。これは、以前に保存したデータを取得してそれを置き換える場所です。内側のループを始めたときの位置に戻りました