-1

How can I run a loop within a loop in WordPress?

My attempt is this so far but it seems to crash the server each time.

 <?php $loop = new WP_Query( array('post_type' => 'careers', 'posts_per_page' => '10', 'meta_key' => 'company', 'meta_value' =>  get_field('company') )); ?>
<?php $loop2 = new WP_Query( array('post_type' => 'jobs', 'posts_per_page' => '-1', 'meta_key' => 'company', 'meta_value' =>  get_field('company') ));?>
    
            <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
            <?php $i = 0; while ( $loop2->have_posts() ) : $loop->the_post(); $i++; ?>
                <?php echo $i ?>
            <?php endwhile; wp_reset_query(); update_field('jobscounter', $i); ?>       
            <?php endwhile; wp_reset_query(); ?>    
Henrik Harju
  • 95
  • 1
  • 10

1 Answers1

0

In PHP, you can open a code section by <?php and close it later with ?>. With that in mind, you can place all your code in multiple lines without opening and closing the <?php ?> block over and over.

Example:

<?php

$loop  = new WP_Query(array(
    'post_type' => 'careers',
    'posts_per_page' => '10',
    'meta_key' => 'company',
    'meta_value' => get_field('company')
));

$loop2 = new WP_Query(array(
    'post_type' => 'jobs',
    'posts_per_page' => '-1',
    'meta_key' => 'company',
    'meta_value' => get_field('company')
));

while ($loop->have_posts()):
    $loop->the_post();
    $i = 0;
    while ($loop2->have_posts()):
        $loop2->the_post();
        $i++;
        echo $i;
    endwhile;
    wp_reset_query();
    update_field('jobscounter', $i);
endwhile;

wp_reset_query();

?>

Note: you where missing a semicolon ; after the echo $i

Note 2: the second loop should use $loop2-> instead of $loop->

Then, you should do something with the data you process in each iteration. If you don't want to just count the total entries. :)

For example:

while ($loop2->have_posts()):
    $loop2->the_post();
    $i++;
    $post_title = $loop2->the_title(); // <--- Getting the title :)
    echo $post_title . "\n";
endwhile;
Nurio Fernández
  • 518
  • 5
  • 22