Home › Forums › Add-ons › Flexible Content Field › Flex Content in Repeater
Trying to repeat flexible content for a hero slider where user can add video embed or an image. How do I echo each piece in the loop? I need the video to be a URL that is embedded into an echoed iFrame in the resorts_slider_video loop.
<!--ORBIT SLIDE-->
<?php
if (have_rows('add_resorts_hero_image_slide', 'option')) {
while (have_rows('add_resorts_hero_image_slide', 'option')) {
the_row();
$herovideo = the_sub_field('add_resorts_hero_slider_video', 'option');
$heroimage = the_sub_field('add_resorts_hero_slider_image', 'option');
if (have_rows('choose_resorts_hero_slider_content', 'option')) {
while (have_rows('choose_resorts_hero_slider_content', 'option')) {
the_row();
echo '<li class="orbit-slide">';
if( get_row_layout() == 'resorts_slider_video' )
//WHAT DO I ECHO HERE FOR THE IFRAME VIDEO?//
elseif( get_row_layout() == 'resorts_slider_video')
//WHAT DO I ECHO HERE FOR THE IMAGE?//
echo '</li>';
}
}
}
}
?>
<!--END ORBIT SLIDE-->
Hi @robertrhu
Could you please share the JSON export file of your field group so I know your setup?
Also, you don’t need to use the ‘option’ ID inside a repeater loop. It should be something like this:
<!--ORBIT SLIDE-->
<?php
if (have_rows('add_resorts_hero_image_slide', 'option')) {
while (have_rows('add_resorts_hero_image_slide', 'option')) {
the_row();
$herovideo = the_sub_field('add_resorts_hero_slider_video');
$heroimage = the_sub_field('add_resorts_hero_slider_image');
if (have_rows('choose_resorts_hero_slider_content')) {
while (have_rows('choose_resorts_hero_slider_content')) {
the_row();
echo '<li class="orbit-slide">';
if( get_row_layout() == 'resorts_slider_video' )
the_sub_field('video_sub_field_of_the_flexible_content');
elseif( get_row_layout() == 'resorts_slider_image')
the_sub_field('image_sub_field_of_the_flexible_content');
echo '</li>';
}
}
}
}
?>
<!--END ORBIT SLIDE-->
Thanks π
Thanks James!
But if I simply add the sub_field the way you have it it won’t embed into HTML, right? For instance, don’t I need to have the image subfield embedded in src=”” ? Thats why I was setting them as variables up top and then was planning on echoing the variable in the loop. But how would I echo it in an img src=”” tag within the loop?
This is what I have so far. Its not pulling in the content associate with the custom fields…
<!--ORBIT SLIDE-->
<?php
if (have_rows('add_resorts_hero_image_slide', 'option')) {
while (have_rows('add_resorts_hero_image_slide', 'option')) {
the_row();
$herovideo = the_sub_field('add_resorts_hero_slider_video');
$heroimage = the_sub_field('add_resorts_hero_slider_image');
$heroimgsize = 'hero-image';
$heroimg_array = wp_get_attachment_image_src($heroimage, $heroimgsize);
$heroimg_url = $heroimg_array[0];
if (have_rows('choose_resorts_hero_slider_content')) {
while (have_rows('choose_resorts_hero_slider_content')) {
the_row();
echo '<li class="orbit-slide">';
if( get_row_layout() == 'resorts_slider_video' )
echo $herovideo;
elseif( get_row_layout() == 'resorts_slider_video')
echo '<img src="'.$heroimg_url.'" />';
echo '</li>';
}
}
}
}
?>
<!--END ORBIT SLIDE-->
Hi @robertrhu
I’m sorry I think I made a mistake in my last answer. If the add_resorts_hero_slider_video
and the add_resorts_hero_slider_image
fields are located inside the flexible content, you should be able to do it like this:
<!--ORBIT SLIDE-->
<?php
if (have_rows('add_resorts_hero_image_slide', 'option')) {
while (have_rows('add_resorts_hero_image_slide', 'option')) {
the_row();
if (have_rows('choose_resorts_hero_slider_content')) {
while (have_rows('choose_resorts_hero_slider_content')) {
the_row();
echo '<li class="orbit-slide">';
if( get_row_layout() == 'resorts_slider_video' ){
$herovideo = get_sub_field('add_resorts_hero_slider_video');
echo $herovideo;
} elseif( get_row_layout() == 'resorts_slider_video') {
$heroimage = get_sub_field('add_resorts_hero_slider_image');
echo '<img src="' . $heroimage['url'] . '" />';
}
echo '</li>';
}
}
}
}
?>
<!--END ORBIT SLIDE-->
To learn how to use image field, please check this page: https://www.advancedcustomfields.com/resources/image/.
If that code doesn’t work, kindly share the JSON export file of your field group so I can test it on my installation.
Thanks π
Finally figured it out. Hope this helps someone else out!
<!--ORBIT SLIDE-->
<?php
if (have_rows('add_resorts_hero_image_slide', 'option')) {
while (have_rows('add_resorts_hero_image_slide', 'option')) {
the_row();
if (have_rows('choose_resorts_hero_slider_content')) {
while (have_rows('choose_resorts_hero_slider_content')) {
the_row();
$herovideo = get_sub_field('add_resorts_hero_slider_video');
$heroimage = get_sub_field('add_resorts_hero_slider_image');
$heroimgsize = 'hero-image';
$heroimg_array = wp_get_attachment_image_src($heroimage, $heroimgsize);
$heroimg_url = $heroimg_array[0];
if( get_row_layout() == 'resorts_slider_video' ) {
echo '<li class="video orbit-slide">';
echo '<img class="background" src="http://localhost.com/vail/tier2-hero-placeholder.jpg" />';
echo '<div class="container">
<div class="watermark"></div>
<iframe id="heroorbitslider-video"
src="'. $herovideo .'"
width="100%"
frameborder="0"
scrolling="no"
allowFullscreen="true"
allowFullScreen="true"
webkitAllowFullScreen="true"
mozAllowFullScreen="true">
</iframe>
</div>';
echo '</li>';
}
elseif( get_row_layout() == 'resorts_slider_image') {
echo '<li class="orbit-slide">';
echo '<img class="background "src="'. $heroimg_url .'" />';
echo '</li>';
}
}
}
}
}
?>
<!--END ORBIT SLIDE-->
You must be logged in to reply to this topic.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
π ACF & ACF PRO 6.0.7 are now available.
— Advanced Custom Fields (@wp_acf) January 18, 2023
β¨This release contains bug fixes and improvements while we continue to work on the next major release of ACF.https://t.co/wQgAOpwmUI
© 2023 Advanced Custom Fields.
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Cookie Policy. If you continue to use this site, you consent to our use of cookies.