Есть два решения, о которых я могу подумать.
Сохранение get_field('article_content')
в массиве, обратное преобразование и отображение строк путем доступа к данным в массиве вместо использования функций ACF.
Используйте ob_start()
, ob_get_contents()
, ob_end_clean()
, чтобы сохранить html каждой строки в массиве и перевернуть его. Я предпочитаю это решение, потому что вы можете использовать функции ACF.
Я адаптировал ваш код со вторым решением:
<?php
$rows_array = array();
if( have_rows('article_content') ): ?>
<?php while( have_rows('article_content') ): the_row();
ob_start();
?>
<?php if( get_row_layout() == 'article') : ?>
<a href="<?php the_sub_field('link'); ?>" class="article">
<?php $att = get_sub_field('image');?>
<?php $image = wp_get_attachment_image_src( $att, 'article-crop' ); ?>
<img src="<?php echo $image[0]; ?>">
<h3><?php the_sub_field('title'); ?></h3>
</a>
<?php elseif( get_row_layout() == 'html' ): ?>
<?php the_sub_field('html_code'); ?>
<?php endif; ?>
<?php
$rows_array[] = ob_get_contents();
ob_end_clean();
endwhile;
?>
<?php
$rows_reversed_array = array_reverse($rows_array);
echo implode('', $rows_reversed_array);
?>
<?php endif; ?>
Код не проверен, но я уверен он должен работать.
Вы также можете заменить:
$rows_array[] = ob_get_contents();
ob_end_clean();
на
$rows_array[] = ob_get_clean();
Это более короткий способ сделать то же самое.