Support

Account

Home Forums Add-ons Repeater Field Return all values from a repeater row by using a single dynamic select

Solved

Return all values from a repeater row by using a single dynamic select

  • I’ve used a repeater field on the Options page. I want to return all values from a single row within that repeater by using a dynamically populated select box on another page.

    Each repeater row has 4 values. Based on selecting just 1 value ($contactName), I want to return all 4 values in that row on the new page.

    Currently, my code below can only be used to return a single value ($contactRole). What do I need to modify to return all 4 values? The code I used below was based on this ACF article here.

    Thanks for the help!

    // Allow a single contact to be selected from the option page and displayed elsewhere.
    function acf_load_contact_field_choices( $field ) {
        
        // reset choices
        $field['choices'] = array();
    
        // if has rows
        if( have_rows('contacts', 'option') ) {
            // while has rows
            while( have_rows('contacts', 'option') ) {
                // instantiate row
                the_row();
                
                // vars
                $contactName = get_sub_field('contact_name');
                $contactRole = get_sub_field('contact_role');
                $contactEmail = get_sub_field('contact_email');
                $contactImage = get_sub_field('contact_image');
    
                // append to choices
                $field['choices'][ $contactRole ] = $contactName;
            }
        }
    
        // return the field
        return $field;
        
    }
  • This appears to be an acf/load_field filter setting the choices of the other field. What do you mean you want to return all fields in a row? Where to you want to do this? Added to the choices? You’ll need to give more detail on what you want to do and where you want to do it.

  • Good questions – sorry it’s not clearer. I’ve realised that the above code doesn’t need modified. I actually need a new block of code for the page template to display the values from the repeater row.

    I’ll try to explain more clearly:
    – There is a repeater block on the options page. Let’s say they are 10 rows, and each row has 4 values.
    – I want the user to be able to go to Page X, and select 1 of those rows to display on that page.
    – The problem is that I’ve opted to use a dynamically populated select to choose the row (code above). The select is populated with only 1 value, so I’m not sure how to return all 4 values of the row.
    – I’m currently using <?php the_field(‘contact’); ?> to display 1 value on Page X.

    I probably need to do something like.
    – Loop the repeater
    – Based on the $field[‘choices’] selection, only display items which match that row

    Or maybe I’m miles off and shouldn’t be trying to use a select?

    Hopefully this helps explain! Thanks a lot for looking.

  • I realised this approach was dumb and just used a custom post type instead with a post object selector on the page I need it to display on.

Viewing 4 posts - 1 through 4 (of 4 total)

You must be logged in to reply to this topic.