get_sub_field()

Last updated Feb 6, 2024

Description

Returns the value of a specific sub field value from a Repeater or Flexible Content field loop.

Parameters

get_sub_field($selector, [$format_value = true], [$escape_html = false]);
  • $selector (string) (Required) The sub field name or field key.
  • $format_value (bool) (Optional) Whether to apply formatting logic. Defaults to true.
  • $escape_html (bool) (Optional) Since 6.2.6 – return an escaped HTML safe version of the field value. Requires $format_value to be true. Defaults to false.

Return

(mixed) The sub field value.

Examples

Get a value from within a Repeater field.

This example shows how to loop through a Repeater field and load a sub field value.

if( have_rows('parent_field') ):
    while ( have_rows('parent_field') ) : the_row();
        $sub_value = get_sub_field('sub_field');
        // Do something...
    endwhile;
else :
    // no rows found
endif;

Get a value from within a Flexible Content field.

This example shows how to loop through a Flexible Content field and load a sub field value.

if( have_rows('parent_field') ):
    while( have_rows('parent_field') ): the_row();

        // Layout 1.
        if( get_row_layout() == 'layout_1' ):

            // Layout 1 value.
            $value = get_sub_field('sub_field_1');

        // Layout 2.
        elseif( get_row_layout() == 'layout_2' ):

            // Layout 2 value.
            $value = get_sub_field('sub_field_2');

        endif;

    endwhile;
endif;

Nested loops

This example shows how to loop through a nested Repeater field and load a sub field value.

/**
 * Field Structure:
 *
 * - parent_repeater (Repeater)
 *   - parent_title (Text)
 *   - child_repeater (Repeater)
 *     - child_title (Text)
 */
if( have_rows('parent_repeater') ):
    while( have_rows('parent_repeater') ) : the_row();

        // Get parent value.
        $parent_title = get_sub_field('parent_title');

        // Loop over sub repeater rows.
        if( have_rows('child_repeater') ):
            while( have_rows('child_repeater') ) : the_row();

                // Get sub value.
                $child_title = get_sub_field('child_title');

            endwhile;
        endif;
    endwhile;
endif;

Related