I’m trying to sync data and the fields I want to change reside in a repeater field.
How do I go about setting the properties of a sub_field programmatically?
And is it possible to create a new repeater object programmatically as well?
$newValue = 'XYZ';
if( get_field('repeater') )
{
while( has_sub_field('repeater') )
{
$variable = get_sub_field('sub_field');
if($variable !=== $newValue){
// set new value
set_sub_field('sub_field', $newValue);
}
}
} else {
// add new entry if not found
add_sub_field('repeater', array('sub_field' => $newValue));
}
Hi @jgraup
For updating a sub field, you could use update_sub_field(...)
method. Here is the link: update_sub_field()
And creating a repeater field programmatically is possible. Export the PHP code. From your wp-admin, go to Custom fields > import/export. To update the data for the repeater field, use update_field(...)
method. Make sure to use the $field_key
for the reference. Have a look at the docs for more info: update_field()
Thank-you. I’m not sure how I missed update_sub_field(...)
but I did. After messing with this stuff I found a much easier solution using the get_field_object(...)
and update_field(...)
$repeater = 'tracks';
// get the object w/info and value
$rObj = get_field_object($repeater, $video_id);
$rKey = $rObj['key'];
$rValue = $rObj['value'];
// adjust the value of any object/row directly
$rValue[0]['srclang'] = 'pwnd';
// add new object/row to the repeater field
$rValue[]=array(
'label' => 'The label',
'src' => 'The src',
'srclang' => 'The srclang',
'kind' => 'captions');
// update the repeater
update_field($rKey,$rValue,$video_id);
Hi @jgraup
I am glad you found an easier solution and thanks for the share.
Have a nice day!