WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru
функция не описана

Automattic\WooCommerce\Checkout\Helpers

ReserveStock::reserve_stock_for_order() public WC 1.0

Put a temporary hold on stock for an order if enough is available.

Это метод класса: ReserveStock{}

Хуки из метода
Возвращает

Null. Ничего.

Использование

$ReserveStock = new ReserveStock();
$ReserveStock->reserve_stock_for_order( $order, $minutes );
$order(\WC_Order) (обязательный)
Order object.
$minutes(число)
How long to reserve stock in minutes.
По умолчанию: woocommerce_hold_stock_minutes

Код ReserveStock::reserve_stock_for_order() WC 4.5.2

woocommerce/src/Checkout/Helpers/ReserveStock.php
<?php
public function reserve_stock_for_order( $order, $minutes = 0 ) {
	$minutes = $minutes ? $minutes : (int) get_option( 'woocommerce_hold_stock_minutes', 60 );

	if ( ! $minutes || ! $this->is_enabled() ) {
		return;
	}

	try {
		$items = array_filter(
			$order->get_items(),
			function( $item ) {
				return $item->is_type( 'line_item' ) && $item->get_product() instanceof \WC_Product && $item->get_quantity() > 0;
			}
		);
		$rows  = array();

		foreach ( $items as $item ) {
			$product = $item->get_product();

			if ( ! $product->is_in_stock() ) {
				throw new ReserveStockException(
					'woocommerce_product_out_of_stock',
					sprintf(
						/* translators: %s: product name */
						__( '&quot;%s&quot; is out of stock and cannot be purchased.', 'woocommerce' ),
						$product->get_name()
					),
					403
				);
			}

			// If stock management is off, no need to reserve any stock here.
			if ( ! $product->managing_stock() || $product->backorders_allowed() ) {
				continue;
			}

			$managed_by_id = $product->get_stock_managed_by_id();

			/**
			 * Filter order item quantity.
			 *
			 * @param int|float             $quantity Quantity.
			 * @param WC_Order              $order    Order data.
			 * @param WC_Order_Item_Product $item Order item data.
			 */
			$item_quantity = apply_filters( 'woocommerce_order_item_quantity', $item->get_quantity(), $order, $item );

			$rows[ $managed_by_id ] = isset( $rows[ $managed_by_id ] ) ? $rows[ $managed_by_id ] + $item_quantity : $item_quantity;
		}

		if ( ! empty( $rows ) ) {
			foreach ( $rows as $product_id => $quantity ) {
				$this->reserve_stock_for_product( $product_id, $quantity, $order, $minutes );
			}
		}
	} catch ( ReserveStockException $e ) {
		$this->release_stock_for_order( $order );
		throw $e;
	}
}