Home › Forums › General Issues › 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');
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!
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 Privacy Policy. If you continue to use this site, you consent to our use of cookies.