Установить дату оплаты при изменении статусов платных заказов в WooCommerce - PullRequest
1 голос
/ 02 апреля 2019

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

Так, например, он удаляет следующее, если статус заказа был изменен с «выполнено» на «ожидает рассмотрения»: «Оплачено 2 апреля 2019 г. в 17:29»

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

Я использую последнюю версию Woocommerce версии 5.1.1

Есть идеи, как это исправить?

1 Ответ

1 голос
/ 02 апреля 2019

Обновление # 1 - Чтобы решить эту проблему, попробуйте следующее:

add_action( 'woocommerce_order_status_changed', 'pending_reset_order_paid_date', 20, 4 );
function reset_order_paid_date( $order_id, $old_status, $new_status, $order ) {
    // Null paid date
    if ( in_array( $old_status, array('on-hold', 'processing', 'completed') ) && 'pending' === $new_status ) {
        $order->set_date_paid(null);
        $order->update_meta_data( '_reseted_paid_date', true ); // Add a custom meta data flag
        $order->save();
    }
    // Set paid date back when the paid date has been nulled on 'processing' and 'completed' status change
    if( $order->get_meta('_reseted_paid_date' ) && in_array( $new_status, array('pending', 'on-hold') )
        && in_array( $new_status, array('processing', 'completed') ) )
    {
        $order->set_date_paid( current_time( 'timestamp', true ) );
        $order->delete_meta_data( '_reseted_paid_date' ); // Remove the custom meta data flag
        $order->save();
    }
}

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

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