Измените статус заказа для возврата при отмене оплаченного бронирования в бронировании Woocommerce - PullRequest
0 голосов
/ 21 марта 2019

Я использую Woocommerce с плагином Woocommerce Booking и хочу обновлять статус заказа, чтобы он возвращался при каждой отмене платного бронирования.

Я нашел несколько ответов на StackOverFlow, но все еще не могуудалось выполнить это требование.

Я знаю, что могу быть совершенно неправ, но это последняя попытка, которую я сделал, и, очевидно, она не сработала:

add_action('woocommerce_booking_paid_to_cancelled','change_status_to_refund', 10, 2);
function change_status_to_refund($booking_id, $order_id) {
     $booking = new WC_Order($booking_id);
     $order = new WC_Order($order_id);
     $booking_status = $booking->get_status();
     if($booking_status != 'paid'){
        $order->update_status('refund', 'order_note');
     }
 }

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 21 марта 2019

Вы не используете правильные аргументы для woocommerce_booking_{ status_from }_to_{ status_to } ловушки действий в своей функции, а именно:

  • Идентификатор бронирования: $booking_id,
  • Объект бронирования $booking.

Таким образом, вам нужно , чтобы получить Заказ из брони в своем коде, чтобы иметь возможность обновить статус Заказа.

Примечание: Условие $booking_status != 'paid' на самом деле не нужно.

Таким образом, ваш код будет намного проще и эффективнее:

add_action('woocommerce_booking_paid_to_cancelled','cancelled_booking_order_status_cahnged_to_refund', 10, 2);
function cancelled_booking_order_status_cahnged_to_refund( $booking_id, $booking ) {$
    // Get the WC_Order object from a booking
    $order = wc_get_order( wp_get_post_parent_id( $booking_id ) );

    // Update order status
    if( is_a($order, 'WC_Order') )
        $order->update_status('refund');
}

Код входит в файл function.php вашего активногодетская тема (или активная тема).Это должно работать.


Документация: Документация разработчика бронирования Woocommerce для ловушек фильтров и действий

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