Автоматическое заполнение заказов WooCommerce в зависимости от общей суммы - PullRequest
0 голосов
/ 30 сентября 2019

Я хочу отключить автоматическое заполнение заказов, но только для тех заказов, сумма которых превышает 30 евро, например. Все продукты являются виртуальными.

Я нашел эту функцию в сети:

add_action( 'woocommerce_thankyou', 'stop_auto_complete_order' );
function stop_auto_complete_order( $order_id ) { 
    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );
    $order->update_status( 'processing' );
}

Однако я понятия не имею, как сделать это, только если заказ превышает определенную сумму.

1 Ответ

1 голос
/ 01 октября 2019

Вам необходимо использовать некоторые WC_Order методы , например:

  • Общая сумма заказа: get_total()
  • Статус заказа: get_status()

В зависимости от вашего кода, будет отображаться следующее:

  • автоматическое заполнение оплаченных заказов до 30 (будет установлен статус «выполнено»)
  • автоматическая обработка оплаченных заказов больше 30 (будет установлен статус «обработка»)

Код:

add_action( 'woocommerce_thankyou', 'stop_auto_complete_order' );
function stop_auto_complete_order( $order_id ) { 
    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );

    // Auto-complete paid orders up to 30 (for "on-hold" and "processing" order statuses)
    if ( $order->get_total() <= 30 && in_array( $order->get_status(), [ 'on-hold', 'processing' ] ) ) {
        $order->update_status( 'completed' );
    } 
    // Other paid orders are set to "processing" status
    elseif( $order->get_status() === 'on-hold' ) {
        $order->update_status( 'processing' );
    }
}

Код помещается в файл functions.php вашего активногодетская тема (или активная тема). Проверено и работает.

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