サブループ (get_post & foreach)がなぜが出力されない

サブループ (get_post & foreach)がなぜが出力されないメモ

 

サブループ (get_post & foreach)がなぜが出力されない

当初は要素の順番の入れ替えなどで表示されていたのでdiv の閉じ忘れなどかな、

とも思っていたのですが、表示が壊れるという感じではなく、完全に出力内容が間違っている(一つの記事の中身が突然表示されている)

状態でしたが、数あるforreach文に

wp_reset_postdata();

が抜けていることに気がつき

<?php endforeach;
wp_reset_postdata();  ?>

をつけることで無事表することができました。

最後にwp_reset_postdataでリセットを行います。wp_reset_postdata()は、$wp_queryオブジェクトが保持している$postをグローバル変数のpostにセットし直すことで、ループ開始前の状態にもどす処理をしています。続けてループを記述する場合以外は必要ないかもしれませんが、不具合を防止するために常に記述するのがよいでしょう。

WordPressで投稿を表示するループの書き方・利用シーンまとめ