Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 避免在Woocommerce中处理状态为COD订单的库存减少_Php_Wordpress_Woocommerce_Orders_Stock - Fatal编程技术网

Php 避免在Woocommerce中处理状态为COD订单的库存减少

Php 避免在Woocommerce中处理状态为COD订单的库存减少,php,wordpress,woocommerce,orders,stock,Php,Wordpress,Woocommerce,Orders,Stock,我的COD付款方式有问题,当客户订购。。。订单变成处理,减少了物料库存 基于此回答线程:,我自定义了代码并尝试了以下脚本: 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->

我的COD付款方式有问题,当客户订购。。。订单变成处理,减少了物料库存

基于此回答线程:,我自定义了代码并尝试了以下脚本:

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;
}
但它不起作用


对于使用“货到付款”付款方式且状态为“正在处理”的订单,如何避免订单项目的库存减少

我对您的代码做了一点更改,并添加了缺失的代码,该代码将减少“已完成”订单状态下的库存,仅适用于COD付款方式:

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文件。已测试并运行

此代码对我帮助很大,谢谢先生!救了我一天。久经考验