WooCommerce自动删除失败订单



我使用的付款网关之一将订单状态从"处理"更改为"失败"或每当交易失败或用户取消事务时。当客户后来试图支付失败的订单时,付款网关会丢弃错误"重复订单ID"。因此,为避免此问题,我想在发生时自动降低失败的订单。

这个网站上有类似的问题,但是给出的解决方案似乎不起作用。

那里提到的代码看起来像这样。

 <?php
function update_order_status( $order_id ) {
$order = new WC_Order( $order_id );
$order_status = $order->get_status();
if ('cancelled' == $order_status || 'failed' == $order_status ||   'pending' == $order_status ) {    
        wp_delete_post($order_id,true);    
   }    
}

您可以使用此自定义函数挂在woocommerce_order_status_changed Action Hook中,该功能在订单状态更改时会触发。

您需要在功能中设置相关付款网关(网关ID)…

当状态更改为"取消"并从"处理"到"失败"状态时,此功能将检测订单状态更改(对于此定义的付款网关)。

因此,对于此特定的付款网关和此特定订单状态的变化,与当前订单有关的所有数据将完全从数据库中删除。

在WooCommerce中

代码:

add_action( 'woocommerce_order_status_changed', 'auto_destroy_failed_orders', 10, 4 );
function auto_destroy_failed_orders( $order_id, $old_status, $new_status, $order ){
    // HERE set your payment Gateway ID (look in WC settings > checkout to get the Gateway ID)
    $gateway_id = 'paypal';
    if ( $order->get_payment_method() != $gateway_id ) return; // Only for this payment gateway
    if ( ( $old_status == 'processing' && $new_status == 'failed' ) || $new_status == 'cancelled' ) {
        wp_delete_post( $order_id, true );
    }
}

代码在您的活动子主题(或主题)或任何插件文件中的function.php文件中。

测试并起作用。

不便再过……我试图使用wp_schedule_single_event()延迟,但我无法使用它……

相关内容

  • 没有找到相关文章

最新更新