Automattic\WooCommerce\StoreApi\Utilities

OrderController::update_line_items_from_cart()protectedWC 1.0

Create order line items.

Метод класса: OrderController{}

Хуков нет.

Возвращает

null. Ничего (null).

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

// protected - в коде основоного (родительского) или дочернего класса
$result = $this->update_line_items_from_cart( $order );
$order(\WC_Order) (обязательный)
The order object to update.

Код OrderController::update_line_items_from_cart() WC 8.7.0

protected function update_line_items_from_cart( \WC_Order $order ) {
	$cart_controller = new CartController();
	$cart            = $cart_controller->get_cart_instance();
	$cart_hashes     = $cart_controller->get_cart_hashes();

	if ( $order->get_cart_hash() !== $cart_hashes['line_items'] ) {
		$order->set_cart_hash( $cart_hashes['line_items'] );
		$order->remove_order_items( 'line_item' );
		wc()->checkout->create_order_line_items( $order, $cart );
	}

	if ( $order->get_meta_data( '_shipping_hash' ) !== $cart_hashes['shipping'] ) {
		$order->update_meta_data( '_shipping_hash', $cart_hashes['shipping'] );
		$order->remove_order_items( 'shipping' );
		wc()->checkout->create_order_shipping_lines( $order, wc()->session->get( 'chosen_shipping_methods' ), wc()->shipping()->get_packages() );
	}

	if ( $order->get_meta_data( '_coupons_hash' ) !== $cart_hashes['coupons'] ) {
		$order->remove_order_items( 'coupon' );
		$order->update_meta_data( '_coupons_hash', $cart_hashes['coupons'] );
		wc()->checkout->create_order_coupon_lines( $order, $cart );
	}

	if ( $order->get_meta_data( '_fees_hash' ) !== $cart_hashes['fees'] ) {
		$order->update_meta_data( '_fees_hash', $cart_hashes['fees'] );
		$order->remove_order_items( 'fee' );
		wc()->checkout->create_order_fee_lines( $order, $cart );
	}

	if ( $order->get_meta_data( '_taxes_hash' ) !== $cart_hashes['taxes'] ) {
		$order->update_meta_data( '_taxes_hash', $cart_hashes['taxes'] );
		$order->remove_order_items( 'tax' );
		wc()->checkout->create_order_tax_lines( $order, $cart );
	}
}