Итак, если у вас есть одно подполе клонирования в поле группы NJ acf, которое клонирует все 70+ выбранных подполей Global , и если вы сбросили все поля вот так ...
echo '<pre>'; print_r(get_fields()); echo '</pre>'; exit;
Что возвращает что-то вроде этого ...
Array
(
[global] => Array
(
[total_games] => 24
...
)
[nj] => Array
(
[total_games] =>
...
)
...
)
Если ваша возвращенная структура массива совпадает с моей, вы можете добавить приведенный ниже код в свои функции, чтобы просто l oop через все ваши NJ клонированные подполя, проверьте, является ли текущее значение пустым, затем проверьте, есть ли у Global соответствующий ключ, если есть соответствующий ключ, получите Глобальное значение и назначьте его соответствующему NJ клонированному полю.
Когда l oop закончится, обновите поле NJ как одно большой массив при сохранении / обновлении поста (произвольный тип поста). Таким образом, возвращается ожидаемый результат в вашем сообщении.
В моем коде я проверяю тип сообщения на post
. Измените post
на свой собственный тип сообщения, и это должно работать.
См. Комментарии в коде ниже ...
// acf action that runs when you save post
add_action( 'acf/save_post', 'nj_empty_clone_value_check', 20 );
/**
* @param $post_id int
* @return void
*/
function nj_empty_clone_value_check($post_id) {
// global post
global $post;
// check we are on the correct post type (currently set to post)
if($post->post_type <> 'post') return;
// get all the fields values from our current post
$fields = get_fields($post_id);
// changes check
$changes = false;
// for each of the cloned subfields in NJ group
foreach ($fields['nj'] as $key => $value) {
// if current NJ group cloned subfield value is blank
if(!$value) {
// check the original Global group subfield value is not blank
if(!empty($fields['global'][$key])) {
// update the NJ group subfield value with the Global group subfield value
$fields['nj'][$key] = $fields['global'][$key];
// update changes check to true
$changes = true;
}
}
}
// if any changes have been made to NJ group
if($changes) {
// update NJ group field with updated NJ array data
update_field('nj', $fields['nj'], $post_id);
}
}