Palych_tw
@Palych_tw
Типа веб-разработчик

Почему update_post_meta не срабатывает?

Всем привет.
Делаю свое действие для заказа в Woo. В нем нужно обновить значение произвольного поля.
код такой
......
       add_filter('woocommerce_order_actions', [__CLASS__, 'addCreateDealOrderAction']);
        add_action('woocommerce_order_action_create_deal', [__CLASS__, 'handleCreateDealOrderAction']);
......

public static function addCreateDealOrderAction($actions)
{
        $actions['create_deal'] = 'Create deal in Teamleader';
        return $actions;
}

 public static function handleCreateDealOrderAction($order)
 {
        update_post_meta($order->get_id(), 'my_field',  'bla bla');
 }

Вызываю экшн, поле не меняет своего значения. Так же пробовал и ACF через update_field().
Но. если я сделаю так
var_dump( update_post_meta($order->get_id(), 'my_field',  'bla bla') );
       die;

То я увижу true на экране и поле обновится.
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
Palych_tw
@Palych_tw Автор вопроса
Типа веб-разработчик
Ну да. Дело в том, что вместе с выполнением экшна, зачем то срабатывает и обновление товара, т.е. отправляется вся форма. И тут дело в том, что сначала отрабатывает экшн, а потом уже апдейт товара. Поэтому поле. которое мне нужно обновить сначала нужно удалить из $_POST, потому что позже оно перетрется снова.

public static function handleCreateDealOrderAction($order)
 {
        if(isset($_POST['my_field'']))
            unset($_POST['my_field']);

        update_post_meta($order->get_id(), 'my_field',  'bla bla');
 }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы