【问题标题】:Avoid stock reduction on COD orders with proscessing status in Woocommerce避免在 Woocommerce 中具有处理状态的 COD 订单的库存减少
【发布时间】:2018-09-15 09:09:57
【问题描述】:

当客户订购时,我的 COD 付款方式出现问题...订单正在处理中,这会减少商品库存。

基于这个答案线程:Reduce stock only for specific order statuses and payment method in Woocommerce,我已经自定义了代码并尝试了这个脚本:

add_filter( 'woocommerce_can_reduce_order_stock', 'wcs_do_not_reduce_processing_stock', 10, 2 );
function wcs_do_not_reduce_processing_stock( $reduce_stock, $order ) {
    if ( $order->has_status( 'processing' ) && $order->get_payment_method() == 'cod' ) {
        $reduce_stock = false;
    }
    return $reduce_stock;
}

但它不起作用。

对于使用“货到付款”付款方式且处于“处理中”状态的订单,如何避免订单商品的库存减少?

【问题讨论】:

    标签: php wordpress woocommerce orders stock


    【解决方案1】:

    我稍微更改了您的代码并添加了缺失的代码,这将减少货到付款方式的“已完成”订单状态的库存:

    add_filter( 'woocommerce_can_reduce_order_stock', 'processing_cod_stock_not_reduced', 20, 2 );
    function processing_cod_stock_not_reduced( $reduce_stock, $order ) {
        if ( ! $order->has_status( 'completed' ) && $order->get_payment_method() == 'cod' ) {
            return false;
        }
        return $reduce_stock;
    }
    
    // Reduce stock on COD orders with completed status
    add_action( 'woocommerce_order_status_completed', 'order_stock_reduction_based_on_payment_method', 20, 2 );
    function order_stock_reduction_based_on_payment_method( $order_id, $order ){
        if( $order->get_payment_method() == 'cod' && ! get_post_meta( $order_id, '_order_stock_reduced', true ) ){
            wc_reduce_stock_levels($order_id);
        }
    }
    

    代码进入活动子主题(或活动主题)的 function.php 文件中。测试和工作

    【讨论】:

    • 这段代码对我有很大帮助,谢谢先生!拯救了我的一天。久经考验
    猜你喜欢
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2017-06-16
    • 2018-10-24
    • 2019-04-16
    相关资源
    最近更新 更多