Home › Forums › Add-ons › Repeater Field › Loop Only Portion of Shortcode
I feel like I’m so close, but just need someone to help assist me with getting this working. I’m using a repeater field and am using the echo shortcode, but only need part of it to repeat in the loop.
See my code below:
<?php
// check if the repeater field has rows of data
if( have_rows('homepage_slider') ):
// loop through the rows of data
// display a sub field value
echo do_shortcode('
[ux_slider timer="4500" arrows="true" bullets="true" auto_slide="true" nav_color="light"]
' . while ( have_rows('homepage_slider') ) : the_row(); . '
[ux_banner bg=" ' . get_sub_field('slider_image') . ' " height="600px" text_color="light" text_align="center" text_pos="center" text_width="70%" parallax_text="0" parallax="3" effect="sparkle"]
<h1>' . get_sub_field('slider_slide_title') . '</h1>
<h4 class="thin-font">' . get_sub_field('slider_sub_title') . '</h4>
[/ux_banner]
' . endwhile; . '
[/ux_slider]');
else :
// no rows found
endif;
?>
Seems to be the placement of the “while” and “endwhile”, but the ux_banner is the only shortcode I want to repeat. Let me know if you have any thoughts/ideas, thanks so much for the help.
This got answered on another forum faster and I thought I’d share the answer for anyone having the same problem or frustration trying to only repeat certain section of a shortcode in a repeater field:
You need to generate the shortcode within the loop, and then execute it afterwards:
if ( have_rows( 'homepage_slider' ) ) {
$shortcode = '[ux_slider timer="4500" arrows="true" bullets="true" auto_slide="true" nav_color="light"]';
while ( have_rows('homepage_slider') ) {
the_row();
$shortcode .=
'[ux_banner bg=" ' . get_sub_field( 'slider_image' ) . ' " height="600px" text_color="light" text_align="center" text_pos="center" text_width="70%" parallax_text="0" parallax="3" effect="sparkle"]
<h1>' . get_sub_field( 'slider_slide_title' ) . '</h1>
<h4 class="thin-font">' . get_sub_field( 'slider_sub_title' ) . '</h4>
[/ux_banner]';
}
$shortcode .= '[/ux_slider]';
echo do_shortcode( $shortcode );
}
The topic ‘Loop Only Portion of Shortcode’ is closed to new replies.
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!
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 Privacy Policy. If you continue to use this site, you consent to our use of cookies.