PHP
WordPress

投稿一覧とかで無限ループする場合

More than 3 years have passed since last update.

一覧ページで投稿記事などが無限にループして表示されてしまうパターンがまれにある。

私がハマったパターンだと、

<?php 

while(the_repeater_field('author_profile')):
query_posts($args);
if (have_posts()):while(have_posts()):the_post();

<?php endwhile; else:?>

<?php endif;?>

<?php endwhile;?>

<?endwhile;?>

というパターンで、advanced custom fieldsのループの間に記事のループを入れていた。

http://2inc.org/blog/2013/03/06/3020/

によるとwordpressループ内にhave_postsを入れると無限ループするよう。

対策としてforeachを使えば良いとのことだったので、以下のようにやってみた。

<?php 

while(the_repeater_field('author_profile')):
$relate_posts = get_posts( $args );
foreach($relate_posts as $post) :setup_postdata( $post );

<?php endforeach; ?>
<?endwhile;?>

とりあえず、これで今のところ問題なさげ。