Abstract_WC_Order_Item_Type_Data_Store::readpublicWC 3.0.0

Read a order item from the database.

Method of the class: Abstract_WC_Order_Item_Type_Data_Store{}

Returns

null. Nothing (null).

Usage

$Abstract_WC_Order_Item_Type_Data_Store = new Abstract_WC_Order_Item_Type_Data_Store();
$Abstract_WC_Order_Item_Type_Data_Store->read( $item );
$item(WC_Order_Item) (required) (passed by reference — &)
Order item object.

Changelog

Since 3.0.0 Introduced.

Abstract_WC_Order_Item_Type_Data_Store::read() code WC 10.3.6

public function read( &$item ) {
	global $wpdb;

	$item->set_defaults();

	// Get from cache if available.
	$data = wp_cache_get( 'item-' . $item->get_id(), 'order-items' );

	if ( false === $data ) {
		$data = $wpdb->get_row( $wpdb->prepare( "SELECT order_id, order_item_name FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d LIMIT 1;", $item->get_id() ) );
		wp_cache_set( 'item-' . $item->get_id(), $data, 'order-items' );
	}

	if ( ! $data ) {
		throw new Exception( __( 'Invalid order item.', 'woocommerce' ) );
	}

	$item->set_props(
		array(
			'order_id' => $data->order_id,
			'name'     => $data->order_item_name,
		)
	);
	$item->read_meta_data();

	if ( $this->cogs_is_enabled && $item->has_cogs() ) {
		$cogs_value = (float) $this->order_item_data_store->get_metadata( $item->get_id(), '_cogs_value', true );

		/**
		 * Filter to customize the Cost of Goods Sold value that gets loaded for a given order item.
		 *
		 * @since 9.5.0
		 *
		 * @param float $cogs_value The value as read from the database.
		 * @param WC_Order_Item $product The order item for which the value is being loaded.
		 */
		$cogs_value = apply_filters( 'woocommerce_load_order_item_cogs_value', $cogs_value, $item );

		$item->set_cogs_value( (float) $cogs_value );
	}
}