Как исправить, что бы при использовании wp_update_post не перезаписывались кастомные поля ACF?
Написал функцию — товары по выборке меняют статус в зависимости от совпадения установки чекбоса и определенного события:
add_action('init', 'my_func_on_save_post');
function my_func_save_post() {
foreach( get_posts($args) as $post ){//$args параметры выборки товаров
$post_id=$post->ID;
$products = get_post_meta( $post_id, 'my_checkbox', true );//данные установок чекбокса
if ( get_post_status($post_id) == 'pending') {
$post_pub = array();
$post_pub['ID'] = $post_id;
$post_pub['post_status'] = 'publish';
wp_update_post( wp_slash($post_pub) );
}
foreach ( $products as $key ) {//при совпадении чекбокс==событие меняется статус
if ($key == $my_parametr && get_post_status($post_id) != 'pending' && get_post_status($post_id) != 'draft'){
$post_pen = array();
$post_pen['ID'] = $post_id;
$post_pen['post_status'] = 'pending';
wp_update_post( wp_slash($post_pen) );
}
break;
}
}
}
Все работает — товары статус меняют.
Но не могу побороть, что при сохранении изменений товара, находящийся в режиме pending или draft, переписываются кастомные поля ACF у всей группы товаров из выборки по $args, данными ACF того товара который обновляешь.
Сейчас делаю необходимые изменения, только когда товары в режиме publish.
Погуглил, проблема в том, что:
This is because when you are updating the post the wp_insert_post function is used and there is "save_post" action hook which is usually used for saving custom fields data.
Перепробовал несколько вариантов, весь вечер этому посвятил, но так и не решил это момент.
Подскажите, люди добрые.