web-dev-qa-db-ja.com

カテゴリForeachがループし続ける?

次のコードを使用して、カテゴリのすべての子カテゴリを取得し、その子カテゴリの子投稿を表示します。

<?php
$cats = get_categories( 'child_of='.get_query_var( 'cat' ) );

foreach ( $cats as $cat ) :

    $args = array(
        'posts_per_page' => 3, // max number of post per category
        'category__in'   => array( $cat->term_id )
    );
    $my_query = new WP_Query( $args ); 

    if ( $my_query->have_posts() ) :
        echo '<h3>'.$cat->name.'</h3>';
        ?>

        <?php while( $my_query->have_posts() ) : $my_query->the_post(); ?>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
            <br />  
        <?php endwhile; ?>

    <?php else : ?>
        No Posts for <?php echo $cat->name; ?>
    <?php endif; ?>
<?php endforeach; ?>

そして私はこの出力を取得したいです。

 Cat Child 1
 -Post1 Child 1
 -Post2 Child 1
 -Post3 Child 1
 -So on... .

 Cat Child 2
 -Post1 Child 2
 -Post2 Child 2
 -Post3 Child 2
 -So on... .

しかし、その代わりに、両方の子カテゴリが繰り返し繰り返されています。誰が問題が何であるか私に言うことができますか?これは私が今持っている出力です。

 Cat Child 1
 -Post1 Child 1
 -Post2 Child 1
 -Post3 Child 1
 -So on... .

 Cat Child 2
 -Post1 Child 2
 -Post2 Child 2
 -Post3 Child 2
 -So on... .
 Cat Child 1
 -Post1 Child 1
 -Post2 Child 1
 -Post3 Child 1
 -So on... .

 Cat Child 2
 -Post1 Child 2
 -Post2 Child 2
 -Post3 Child 2
 -So on... .
 Cat Child 1
 -Post1 Child 1
 -Post2 Child 1
 -Post3 Child 1
 -So on... .

 Cat Child 2
 -Post1 Child 2
 -Post2 Child 2
 -Post3 Child 2
 -So on... .

9回ループして停止するまで。何が問題ですか?

1
user1178152
   <?php  $cats = get_categories('child_of='.get_query_var('cat')); 

   foreach ($cats as $cat) :

  $args = array(
  'posts_per_page' => 3, // max number of post per category
  'category__in' => array($cat->term_id)
   );
   $my_query = new WP_Query($args); 

    if ($my_query->have_posts()) : 
    echo '<h3>'.$cat->name.'</h3>';

    while ($my_query->have_posts()) : $my_query->the_post(); ?>     
    <?php /*general loop output; for instance: */ ?>
    <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>    <br />  

    <?php endwhile; ?>

    <?php else : 
    echo 'No Posts for '.$cat->name;                
    endif; 
    wp_reset_query();
    endforeach; ?>

wp_reset_query()を使用してください。リセットWP_Queryのendforeachの前に。

1
Arvind Pal