has_sub_field()

Эта функция устаревшая. Пожалуйста, используйте have_rows().

Обзор

Функция has_sub_field() используется в PHP цикле «while» для перебора каждой итерации повторителя / гибкого содержимого и используется вместе с этими функциями:

Параметры

<?php has_sub_field($field_name, $post_id); ?>
  • $field_name (строка) (обязательное) Имя поля повторителя / гибкого содержимого, которое необходимо вывести.
  • $post_id (число) (необязательное) ID поста. По умолчанию текущий пост. Также может быть таксономией / пользователем / страницей настроек и т.д.

Использование

<?php

/*
*  Перебираем Повторитель
*/

if( get_field('repeater') ): ?>

	<?php while( has_sub_field('repeater') ): ?>

		<div>
			<img src="<?php the_sub_field('image'); ?>" alt="<?php the_sub_field('alt'); ?>" />
		    <p><?php the_sub_field('content'); ?></p>
		</div>

	<?php endwhile; ?>

<?php endif; 

/*
*  Перебираем Гибкое содержимое
*/

if( get_field('flexible_content') ): ?>

	<?php while( has_sub_field("flexible_content") ): ?>

		<?php if(get_row_layout() == "paragraph"): // макет: Paragraph ?>

			<div>
				<?php the_sub_field("content"); ?>
			</div>

		<?php elseif(get_row_layout() == "file"): // макет: File ?>

			<div>
				<a href="<?php the_sub_field("file"); ?>" ><?php the_sub_field("name"); ?></a>
			</div>

		<?php elseif(get_row_layout() == "featured_posts"): // макет: Featured Posts ?>

			<div>
				<h2><?php the_sub_field("title"); ?></h2>
				<?php the_sub_field("content"); ?>

				<?php if(get_sub_field("posts")): ?>
					<ul>
					<?php foreach(get_sub_field("posts") as $p): ?>
						<li><a href="<?php echo get_permalink($p->ID); ?>"><?php echo get_the_title($p->ID); ?></a></li>
					<?php endforeach; ?>
					</ul>
				<?php endif; ?>

			</div>

		<?php endif; ?>

	<?php endwhile; ?>
<?php endif; 

/*
*  Перебираем вложенный Повторитель
*/

if( get_field('parent_repeater') ): ?>
	<?php while( has_sub_field('parent_repeater') ): ?>

		<div>
			<?php if( get_sub_field('child_repeater') ): ?>
				<ul>
				<?php while( has_sub_field('child_repeater') ): ?>
					<li><?php the_sub_field('item'); ?></li>
				<?php endwhile; ?>
				</ul>
			<?php endif; ?>
		</div>	

	<?php endwhile; ?>
<?php endif; 

/*
*  Перебираем вложенный Повторитель (с произвольным ID поста)
*/

if( get_field('parent_repeater', 123) ): ?>
	<?php while( has_sub_field('parent_repeater', 123) ): ?>

		<div>
			<?php 

			/*
			*  примечание: вам не нужно указывать $post_id для любой функции, которая работает с вложенными полями
			*/

			if( get_sub_field('child_repeater') ): ?>
				<ul>
				<?php while( has_sub_field('child_repeater') ): ?>
					<li><?php the_sub_field('item'); ?></li>
				<?php endwhile; ?>
				</ul>
			<?php endif; ?>
		</div>	

	<?php endwhile; ?>
<?php endif;

?>