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 );
}
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!
Plugin boilerplates can do some of the heavy lifting during initial development. We look at four options to speed up your plugin creation. https://t.co/ZtMsdBxAHw
— Advanced Custom Fields (@wp_acf) June 5, 2023
© 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.