После foreach не работает while

<?php foreach ( $otzyvy as $post ):
            
?>
        
<?php endforeach; ?>
<?php while( have_rows('cf7-checkbox')): the_row(); ?>
    <button class="checkbox" value="<?php echo the_sub_field('checkbox')?> "><?php echo the_sub_field('checkbox')?><div class="img"><img src="<?php bloginfo('template_url'); ?>/build/img/checkbox_close_button.png"/></div></button>
<?php endwhile; ?>

После foreach не срабатывает while, убираю foreach (в foreach свое действие, просто не стал загромождать вопрос) - все ок, подскажите пожалуйста в чем ошибка


Ответы (1 шт):

Автор решения: Darth KYL

проблема в том что вы называете переменную в цикле foreach как $post, и этим перезаписываете глобальную переменную $post, лучше использовать другое название для этой переменной например $review_item. если вам все же очень хочется использовать переменную с именем $post как значение в цикле foreach, то после цикла вы можете сбросить ее используя wp_reset_postdata();

<?php foreach ( $otzyvy as $post ):
            
?>
        
<?php
endforeach;
wp_reset_postdata();
?>
<?php while( have_rows('cf7-checkbox')): the_row(); ?>
    <button class="checkbox" value="<?php echo the_sub_field('checkbox')?> "><?php echo the_sub_field('checkbox')?><div class="img"><img src="<?php bloginfo('template_url'); ?>/build/img/checkbox_close_button.png"/></div></button>
<?php endwhile; ?>
→ Ссылка