wordpress 确保所有WooCommerce订阅和WooCommerce付款的手动续订订单自动“完成”

h5qlskok  于 2023-06-21  发布在  WordPress
关注(0)|答案(1)|浏览(178)

我已经建立了一个使用WooCommerce订阅的网站,它使用WooCommerce Payments作为支付网关。用户可以选择按月或按年订阅。所有订阅都有一个月的免费试用。
目前,用户只能使用信用卡/借记卡支付。对于这些用户,他们的订阅暂时“暂停”,直到订单完成,当订单完成时,订阅返回到“活动”状态。
然而,一些精选的订阅者获得了100%的折扣券。对于这些,它们被标记为“通过手动续订”。创建父订单或续订订单时,它们无法标记为“已完成”。它们总是被“搁置”。我猜这与这些是“手动续订”订单的事实有关。
我试着创建一些PHP代码作为一个片段添加进去,当这些用户创建了订单时捕捉它们,这样它们就可以自动标记为“完成”。这就是我到目前为止所做的。

add_action( 'woocommerce_thankyou', 'sd_woocommerce_auto_complete_order' );
function sd_woocommerce_auto_complete_order( $order_id ) { 
    if ( ! $order_id ) {
        return;
    }
    $order = wc_get_order( $order_id );
    $order->update_status( 'completed' );
}

add_action('woocommerce_subscription_payment_complete', 'subscription_payment_complete_hook_callback', 10, 1);
function subscription_payment_complete_hook_callback( $subscription ) {
    // Get the current order
    $current_order = $subscription->get_last_order( 'all', 'any' );

    // For Paypal recurring orders
    if( $current_order->get_payment_method() === 'woocommerce_payments' ) {

        // Update status to completed
        $current_order->update_status('completed');
    }
}

不幸的是,这似乎没有效果,因为我仍然需要手动将这些用户的订单标记为“完成”。
谁能帮我找出我创建的代码的问题,以及如何更新它,以便我可以确保所有手动续订订单都自动标记为“已完成”?或者,是否有办法更改“手动续订”订单,使其不需要不断生成订单?
谢谢你!

elcex8rz

elcex8rz1#

结果,这比我想象的要简单得多。
基本上,与WooCommerce,订单是'通过手动续订'的事实是无关的订单不自动标记为'完成'.
从本质上讲,对于自动标记为“已完成”的订单,WooCommerce需要知道,一旦成功收到付款,就不需要代表网站所有者/管理员采取任何行动。
因此,创建的任何产品都必须标记为“虚拟”和“可下载”。我的产品只被标记为“虚拟”,这就是为什么它会发生。现在它们都被标记为“已完成”,我所有的订单似乎都被自动标记为“已完成”。:)

相关问题