php 取消订单时自动恢复WooCommerce Stock

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 取消订单时自动恢复WooCommerce Stock相关的知识,希望对你有一定的参考价值。

class Luminus_Woocommerce_Auto_Stock_Restore {
	function __construct() {
		add_action( 'woocommerce_order_status_processing_to_cancelled', array( $this, 'restore_order_stock' ), 10, 1 );
	 	add_action( 'woocommerce_order_status_completed_to_cancelled', array( $this, 'restore_order_stock' ), 10, 1 );
	 	add_action( 'woocommerce_order_status_on-hold_to_cancelled', array( $this, 'restore_order_stock' ), 10, 1 );
	 	// add_action( 'woocommerce_order_status_processing_to_refunded', array( $this, 'restore_order_stock' ), 10, 1 );
	 	// add_action( 'woocommerce_order_status_completed_to_refunded', array( $this, 'restore_order_stock' ), 10, 1 );
	 	// add_action( 'woocommerce_order_status_on-hold_to_refunded', array( $this, 'restore_order_stock' ), 10, 1 );
	}
	
	public function restore_order_stock( $order_id ) {
		$order = new WC_Order( $order_id );
 
		if ( ! get_option('woocommerce_manage_stock') == 'yes' && ! sizeof( $order->get_items() ) > 0 ) {
			return;
 		}

		foreach ( $order->get_items() as $item ) {
			if ( $item['product_id'] > 0 ) {
 
				$_product = $order->get_product_from_item( $item );
				 
				if ( $_product && $_product->exists() && $_product->managing_stock() ) {
					$old_stock = $_product->stock;
				 	$qty = apply_filters( 'woocommerce_order_item_quantity', $item['qty'], $this, $item );
				 	$new_quantity = $_product->increase_stock( $qty );
				 	do_action( 'woocommerce_auto_stock_restored', $_product, $item );
				 	$order->add_order_note( sprintf( __( 'Item #%s stock incremented from %s to %s.', 'woocommerce' ), $item['product_id'], $old_stock, $new_quantity) );
				 	$order->send_stock_notifications( $_product, $new_quantity, $item['qty'] );
	 			}
			}
		}
 	}
}

new Luminus_Woocommerce_Auto_Stock_Restore();

以上是关于php 取消订单时自动恢复WooCommerce Stock的主要内容,如果未能解决你的问题,请参考以下文章

过滤 woocommerce 取消未付订单

使用优惠券时自动完成订单。 WooCommerce [重复]

php [WooCommerce Core]自动完成订单

php [WooCommerce Core]自动完成订单

php 自动完成WooCommerce订单

php 自动完成WooCommerce订单