В общем, сам спросил - сам ответил, может кому пригодится. Не сразу сообразил, но гораздо легче добавить запятую перед каждым элементом, кроме первого). Примерно так в моем случае:
<?php if ($loop_counter > 0) echo ',' ?>
Вот так у меня работает корректно:
<?php if ( have_rows( 'fifth-section' ) ) : ?>
<?php while ( have_rows( 'fifth-section' ) ) : the_row(); ?>
<?php if ( get_sub_field( 'display' ) == 1 ) { ?>
"offers": {
"@type": "AggregateOffer",
"offers": [
<?php if( have_rows('plans') ): ?>
<?php
$loop_counter = 0;
while( have_rows('plans') ): the_row();
if($loop_counter%4 == 0){
if($loop_counter > 0){
?>
<?php } ?>
<?php }
$subtitle = get_sub_field('subtitle');
?>
<?php if ($loop_counter > 0) echo ',' ?>
{
"@type": "Offer",
"name": "<?php echo $subtitle; ?>",
"url": "<?php echo get_permalink(); ?>"
},
<?php
$loop_counter++;
endwhile;
?>
<?php endif; ?>
<?php } else { } ?>
<?php endwhile; ?>
<?php endif; ?>
]
}
}