1

Я пытаюсь обновить детали платежных данных клиентов в интерфейсе. У меня есть следующий код:wc_update_order() Не работает как ожидалось

if(isset($_POST['save_order'])){ 
    $update_billing_details = wc_update_order(array('order_id' => $update_order_id)); 
    $update_order_args = array(
     'first_name' => $_POST['billing_first_name'] 
    ); 
$update_billing_details->set_address($update_order_args, 'billing'); 
if($update_billing_details){ 
    echo "success"; 
} 
} 

Что происходит, первое имя обновляется после нажатия кнопки сохранения ДВАЖДЫ.

Пример:

Оригинальное название 'John'. Если я сделаю это «Джонни» и удару сэкономлю, он все равно покажет «Джон». И если я наберу имя «Johndel», то нажмите «Сохранить», это стало «Джонни» и так далее.

Но, если я могу сделать мой код, как это:

if(isset($_POST['save_order'])){ 
    $update_order_args = array(
       '_billing_first_name' => $_POST['billing_first_name'], 
       'order_id' => $update_order_id 
       ); 
    $update_billing_details = wc_update_order($update_order_args); 
} 

Ничего не происходит.

Что я делаю неправильно? Я основывал свою работу на this question.

Любая помощь очень ценится.

Спасибо,

-Eli

ответ

1

Вы можете попробовать использовать вместо update_post_meta() функцию, таким образом:

if(isset($_POST['save_order']) && isset($_POST['billing_first_name'])){ 
    update_post_meta($update_order_id, '_billing_first_name', sanitize_text_field($_POST['billing_first_name'])); 
} 

Вы должны быть уверены, что $update_order_id является определенным идентификатором заказа здесь ,

Поскольку я не могу это проверить, я ничего не могу гарантировать ... Надеюсь, это сработает.

Смежные вопросы