WC_Product_Data_Store_CPT::read_product_data
Read product data. Can be overridden by child classes to load other props.
Method of the class: WC_Product_Data_Store_CPT{}
No Hooks.
Returns
null. Nothing (null).
Usage
// protected - for code of main (parent) or child class $result = $this->read_product_data( $product );
- $product(WC_Product) (required) (passed by reference — &)
- Product object.
Changelog
| Since 3.0.0 | Introduced. |
WC_Product_Data_Store_CPT::read_product_data() WC Product Data Store CPT::read product data code WC 10.3.6
protected function read_product_data( &$product ) {
$id = $product->get_id();
$post_meta_values = get_post_meta( $id );
$meta_key_to_props = array(
'_sku' => 'sku',
'_global_unique_id' => 'global_unique_id',
'_regular_price' => 'regular_price',
'_sale_price' => 'sale_price',
'_price' => 'price',
'_sale_price_dates_from' => 'date_on_sale_from',
'_sale_price_dates_to' => 'date_on_sale_to',
'total_sales' => 'total_sales',
'_tax_status' => 'tax_status',
'_tax_class' => 'tax_class',
'_manage_stock' => 'manage_stock',
'_backorders' => 'backorders',
'_low_stock_amount' => 'low_stock_amount',
'_sold_individually' => 'sold_individually',
'_weight' => 'weight',
'_length' => 'length',
'_width' => 'width',
'_height' => 'height',
'_upsell_ids' => 'upsell_ids',
'_crosssell_ids' => 'cross_sell_ids',
'_purchase_note' => 'purchase_note',
'_default_attributes' => 'default_attributes',
'_virtual' => 'virtual',
'_downloadable' => 'downloadable',
'_download_limit' => 'download_limit',
'_download_expiry' => 'download_expiry',
'_thumbnail_id' => 'image_id',
'_stock' => 'stock_quantity',
'_stock_status' => 'stock_status',
'_wc_average_rating' => 'average_rating',
'_wc_rating_count' => 'rating_counts',
'_wc_review_count' => 'review_count',
'_product_image_gallery' => 'gallery_image_ids',
);
$set_props = array();
foreach ( $meta_key_to_props as $meta_key => $prop ) {
$meta_value = $post_meta_values[ $meta_key ][0] ?? null;
$set_props[ $prop ] = maybe_unserialize( $meta_value ); // get_post_meta only unserializes single values.
}
$set_props['category_ids'] = $this->get_term_ids( $product, 'product_cat' );
$set_props['tag_ids'] = $this->get_term_ids( $product, 'product_tag' );
$set_props['brand_ids'] = $this->get_term_ids( $product, 'product_brand' );
$set_props['shipping_class_id'] = current( $this->get_term_ids( $product, 'product_shipping_class' ) );
$set_props['gallery_image_ids'] = array_filter( explode( ',', $set_props['gallery_image_ids'] ?? '' ) );
$product->set_props( $set_props );
if ( $this->cogs_feature_is_enabled() ) {
$this->load_cogs_data( $product );
}
}