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

WooCommerce中指定单个虚拟产品付款后设订单状态为Processing

WooCommerce:指定虚拟产品付款后设置为Processing状态

默认情况下,WooCommerce中所有虚拟产品的订单在付款完成后会自动标记为Completed状态。如果需要让特定ID的单个虚拟产品,其对应订单付款完成后状态改为Processing,可以通过以下代码实现:

// 设置目标虚拟产品ID,请替换为你的产品ID
$target_product_id = 123;

add_filter( 'woocommerce_payment_complete_order_status', 'custom_payment_complete_order_status', 10, 3 );
function custom_payment_complete_order_status( $status, $order_id, $order ) {
    global $target_product_id;
    
    // 遍历订单中的所有商品
    foreach ( $order->get_items() as $item ) {
        $product_id = $item->get_product_id();
        
        // 检查是否包含目标产品
        if ( $product_id == $target_product_id ) {
            // 返回Processing状态
            return 'processing';
        }
    }
    
    // 如果没有目标产品,保持原有状态逻辑
    return $status;
}

代码说明:

  • 将代码添加到你的WordPress主题functions.php文件,或者自定义功能插件中(不建议修改WooCommerce核心文件)。
  • 把$target_product_id的值替换为你需要设置的虚拟产品ID。
  • 该代码通过woocommerce_payment_complete_order_status过滤器,拦截付款完成后的状态设置逻辑:如果订单包含目标产品,就将状态改为Processing;否则沿用WooCommerce默认的状态规则(虚拟产品自动设为Completed,实体产品设为Processing)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:45:27