Не сохранять заказ при отказе веб-сервиса, когда отображается уведомление в WooCommerce - PullRequest
2 голосов
/ 18 июня 2020

У меня есть требование отправить детали заказа во внутреннюю базу данных компании. Я хочу иметь возможность сохранять заказ только в том случае, если вызов БД возвращает успешный ответ. Если нет, я хочу остановить заказ и показать сообщение на экране оформления заказа.

Я пытаюсь подключиться к woocommerce_checkout_create_order, и если ответ ложный, возвращаю false и останавливаю процесс заказа:

add_action( 'woocommerce_checkout_create_order', 'process_new_order_details',  10, 2  );
  function process_new_order_details( $order ) {
     ......

     if($json_response->success == 1) {

       // We got a success message back from internal DB
       return $order;

     } else {

       // Could not save in internal DB
       return false;

  }

Но он всегда сохраняет заказ в базе данных независимо от ответ веб-службы. Есть предположения?

Как я могу избежать сохранения порядка, если ответ веб-службы не является «успешным», отображая настраиваемое уведомление об ошибке?

1 Ответ

2 голосов
/ 18 июня 2020

Вы будете использовать следующее:

add_action( 'woocommerce_checkout_create_order', 'process_new_order_details',  10, 2  );
function process_new_order_details( $order, $data ) {

    # ...... / ......

    if($json_response->success == 1) {

        return $order;

    } else { // Throw an error notice 

        $error_text = __("My custom error notice", "wocommerce" );

        throw new Exception( $error_text );
    }
}

Код входит в functions. php файл вашей активной дочерней темы (или активной темы). Проверено и работает.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...