Как исправить, что бы при использовании 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.
Перепробовал несколько вариантов, весь вечер этому посвятил, но так и не решил это момент.
Подскажите, люди добрые.