You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce订阅续费COD支付:自定义订单状态

解决WooCommerce Subscriptions中COD续费订单状态问题

问题描述

使用WooCommerce Subscriptions的货到付款(COD)支付方式时,续费订单会被标记为「Pending payment」状态,对应的订阅会同步变为「on-hold」状态。需要将续费订单状态改为「Processing」,但以下代码对续费订单无效:

add_filter( 'woocommerce_cod_process_payment_order_status', 'change_cod_payment_order_status', 10, 2 );
function change_cod_payment_order_status( $order_status, $order ) {
    return 'processing';
}

原因分析

上述代码使用的woocommerce_cod_process_payment_order_status钩子仅作用于首次创建的常规订单,而订阅的续费订单由WooCommerce Subscriptions系统自动生成,不会触发这个COD支付处理钩子,因此无法生效。

解决方案

使用订阅专属钩子,在续费订单创建后直接修改状态:

add_action( 'woocommerce_subscription_renewal_order_created', 'set_cod_renewal_order_to_processing', 10, 2 );
function set_cod_renewal_order_to_processing( $renewal_order, $subscription ) {
    // 判断续费订单支付方式是否为COD
    if ( 'cod' === $renewal_order->get_payment_method() ) {
        // 更新续费订单状态为Processing
        $renewal_order->update_status( 'processing', 'COD续费订单自动设置为处理中' );
        // 同步更新订阅状态为Active(避免订阅处于暂停状态)
        $subscription->update_status( 'active', 'COD续费订单处理中,恢复订阅激活状态' );
    }
}

代码说明

  • woocommerce_subscription_renewal_order_created:该钩子在续费订单创建完成后立即触发,确保能精准处理续费订单
  • 先判断支付方式为COD,避免影响其他支付方式的续费订单
  • 同时更新订阅状态为「Active」,解决原逻辑中订单Pending导致订阅on-hold的问题

内容的提问来源于stack exchange,提问作者user840539

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 05:32:23