Abstract_WC_Order_Item_Type_Data_Store::read
Read a order item from the database.
Метод класса: Abstract_WC_Order_Item_Type_Data_Store{}
Хуки из метода
Возвращает
null. Ничего (null).
Использование
$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) (обязательный) (передается по ссылке — &)
- Order item object.
Список изменений
| С версии 3.0.0 | Введена. |
Код Abstract_WC_Order_Item_Type_Data_Store::read() Abstract WC Order Item Type Data Store::read WC 10.8.1
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_metadata = $this->order_item_data_store->get_metadata( $item->get_id(), '_cogs_value', true );
// Only set COGS value if the metadata actually exists.
// If it doesn't exist, leave it as null so it can be calculated later.
if ( '' !== $cogs_metadata && false !== $cogs_metadata ) {
$cogs_value = (float) $cogs_metadata;
/**
* 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 );
}
}
}