Support

Account

Home Forums Add-ons Repeater Field Loop Only Portion of Shortcode

Solved

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 );
    }
Viewing 2 posts - 1 through 2 (of 2 total)

The topic ‘Loop Only Portion of Shortcode’ is closed to new replies.