Support

Account

Home Forums General Issues Help with foreach (I think?)

Solved

Help with foreach (I think?)

  • Greetings – We are attempting to populate an ACF field with the values of a Post Object in the same form, which lives in a nested repeater. This field is updated after the user submits the form.

    The code below (which we’re deploying via Woody Snippets, if that matters) works, but has an issue we need help with (we’re clearly not PHP experts and are learning as we go).

    The ACF field that gets updated does get populated on form save, but only with the very last instance of the nested repeater and only the very last of its sub-field values.

    It seems that a foreach is needed but we can’t figure it out. The end result should be a list of all post_titles, separated by a space, from the Post Object product_table_product sub-field. This list will be saved to a text field called search_terms.

    Here is our code:

    function save_search_terms( $post_id ) {
        
        // Get new value
    	if( have_rows('product_table') ):
        while( have_rows('product_table') ) : the_row();
    
            // Loop over sub repeater rows
            if( have_rows('product_table_products') ):
                while( have_rows('product_table_products') ) : the_row();
    
                    // Get sub value
                    $tempsearchterms = get_sub_field('product_table_product');
                         $searchterms = $tempsearchterms->post_title;
    	
                endwhile;
            endif;
        endwhile;
    endif;	
        
        // update field
        update_field('search_terms', $searchterms);
    }
    
    add_action('acf/save_post', 'save_search_terms');

    Thanks for any help!

  • Can’t find where to delete but solved this one on my own. Thanks 🙂

    // This populates and saves search terms for product landing pages based on what lives in the product tables
    
    function save_search_terms( $post_id ) {
        
        $searchterms = array();
        
        if( have_rows('product_table') ):
        while( have_rows('product_table') ) : the_row();
    
        // Loop over sub repeater rows        
    
            if( have_rows('product_table_products') ):
                while( have_rows('product_table_products') ) : the_row();
    
        // Get sub value 
        
        foreach( $tempsearchterms as $tempsearchterm );
            $tempsearchterm = get_sub_field('product_table_product');
                $searchterms[] = $tempsearchterm->part_number . " " . $tempsearchterm->product_name . " " . $tempsearchterm->model_type;
    	
                endwhile;
            endif;
        endwhile;
    endif;    
        
        // update field
    	
        update_field('search_terms', $searchterms);
    }
    
    add_action('acf/save_post', 'save_search_terms');
Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.