It's not possible to append a row to an ACF repeater field without a custom code workaround that utilizes our API: http://www.wpallimport.com/documentation/developers/action-reference/.
The following is an example to show you how this can be done. You will almost certainly need to adjust the code snippet to make it work with your data/site.
-
Create a new "Manual Record Matching" import that updates the post(s): http://www.wpallimport.com/documentation/recurring/manual-record-matching/
-
Store the ACF data in your own dummy custom field: http://d.pr/i/3Si4ad.
-
Add some code in the Function Editor that grabs that data and appends it to the ACF field.
Example code:
add_action( 'pmxi_saved_post', 'soflyy_add_data', 10, 3 );
function soflyy_add_data( $id, $xml, $update ) {
$selector = 'basic_repeater'; // The Parent field name
$subfield1 = 'repeater_text'; // The repeating field you want to add data to
if ( $value = get_post_meta( $id, 'my_repeater_data', true ) ) {
$row = array( $subfield1 => $value );
add_row( $selector, $row, $id );
}
delete_post_meta( $id, 'my_repeater_data' );
}
- On step 4 of the import, choose to only update the custom field that you're importing: http://d.pr/i/WfZKAT.
Here's a different example snippet that shows how you could check for duplicates when appending repeater data:
add_action( 'pmxi_saved_post', 'my_update_results', 10, 3 );
function my_update_results( $id, $xml, $is_update ) {
$year = get_post_meta( $id, '_year', true );
$results = get_post_meta( $id, '_results', true );
$repeater_selector = 'yearly_results';
$year_selector = 'year';
$results_selector = 'results';
$row = array(
$year_selector => $year,
$results_selector => $results
);
if ( ! my_is_duplicate_acf_row( $row, $repeater_selector, $id ) ) {
add_row( $repeater_selector, $row, $id );
}
delete_post_meta( $id, '_year' );
delete_post_meta( $id, '_results' );
}
function my_is_duplicate_acf_row( $row, $selector, $id ) {
$rows = array();
if ( have_rows( $selector, $id ) ) {
$i = 0;
while ( have_rows( $selector, $id ) ) {
$existing_row = the_row( TRUE );
$existing_row = maybe_unserialize( $existing_row );
$row = maybe_unserialize( $row );
if ( $row === $existing_row ) {
return TRUE;
}
}
}
return FALSE;
}