WC_Product_Variation_Data_Store_CPT::read_product_data()
Read post data.
Method of the class: WC_Product_Variation_Data_Store_CPT{}
No Hooks.
Return
null
. Nothing (null).
Usage
// protected - for code of main (parent) or child class $result = $this->read_product_data( $product );
- $product(WC_Product_Variation) (required) (passed by reference — &)
- Product object.
Changelog
Since 3.0.0 | Introduced. |
WC_Product_Variation_Data_Store_CPT::read_product_data() WC Product Variation Data Store CPT::read product data code WC 9.2.3
protected function read_product_data( &$product ) { $id = $product->get_id(); $product->set_props( array( 'description' => get_post_meta( $id, '_variation_description', true ), 'regular_price' => get_post_meta( $id, '_regular_price', true ), 'sale_price' => get_post_meta( $id, '_sale_price', true ), 'date_on_sale_from' => get_post_meta( $id, '_sale_price_dates_from', true ), 'date_on_sale_to' => get_post_meta( $id, '_sale_price_dates_to', true ), 'manage_stock' => get_post_meta( $id, '_manage_stock', true ), 'stock_status' => get_post_meta( $id, '_stock_status', true ), 'low_stock_amount' => get_post_meta( $id, '_low_stock_amount', true ), 'shipping_class_id' => current( $this->get_term_ids( $id, 'product_shipping_class' ) ), 'virtual' => get_post_meta( $id, '_virtual', true ), 'downloadable' => get_post_meta( $id, '_downloadable', true ), 'gallery_image_ids' => array_filter( explode( ',', get_post_meta( $id, '_product_image_gallery', true ) ) ), 'download_limit' => get_post_meta( $id, '_download_limit', true ), 'download_expiry' => get_post_meta( $id, '_download_expiry', true ), 'image_id' => get_post_thumbnail_id( $id ), 'backorders' => get_post_meta( $id, '_backorders', true ), 'sku' => get_post_meta( $id, '_sku', true ), 'global_unique_id' => get_post_meta( $id, '_global_unique_id', true ), 'stock_quantity' => get_post_meta( $id, '_stock', true ), 'weight' => get_post_meta( $id, '_weight', true ), 'length' => get_post_meta( $id, '_length', true ), 'width' => get_post_meta( $id, '_width', true ), 'height' => get_post_meta( $id, '_height', true ), 'tax_class' => ! metadata_exists( 'post', $id, '_tax_class' ) ? 'parent' : get_post_meta( $id, '_tax_class', true ), ) ); if ( $product->is_on_sale( 'edit' ) ) { $product->set_price( $product->get_sale_price( 'edit' ) ); } else { $product->set_price( $product->get_regular_price( 'edit' ) ); } $parent_object = get_post( $product->get_parent_id() ); $terms = get_the_terms( $product->get_parent_id(), 'product_visibility' ); $term_names = is_array( $terms ) ? wp_list_pluck( $terms, 'name' ) : array(); $exclude_search = in_array( 'exclude-from-search', $term_names, true ); $exclude_catalog = in_array( 'exclude-from-catalog', $term_names, true ); if ( $exclude_search && $exclude_catalog ) { $catalog_visibility = 'hidden'; } elseif ( $exclude_search ) { $catalog_visibility = 'catalog'; } elseif ( $exclude_catalog ) { $catalog_visibility = 'search'; } else { $catalog_visibility = 'visible'; } $product->set_parent_data( array( 'title' => $parent_object ? $parent_object->post_title : '', 'status' => $parent_object ? $parent_object->post_status : '', 'sku' => get_post_meta( $product->get_parent_id(), '_sku', true ), 'global_unique_id' => get_post_meta( $product->get_parent_id(), '_global_unique_id', true ), 'manage_stock' => get_post_meta( $product->get_parent_id(), '_manage_stock', true ), 'backorders' => get_post_meta( $product->get_parent_id(), '_backorders', true ), 'stock_quantity' => wc_stock_amount( get_post_meta( $product->get_parent_id(), '_stock', true ) ), 'weight' => get_post_meta( $product->get_parent_id(), '_weight', true ), 'length' => get_post_meta( $product->get_parent_id(), '_length', true ), 'width' => get_post_meta( $product->get_parent_id(), '_width', true ), 'height' => get_post_meta( $product->get_parent_id(), '_height', true ), 'tax_class' => get_post_meta( $product->get_parent_id(), '_tax_class', true ), 'shipping_class_id' => absint( current( $this->get_term_ids( $product->get_parent_id(), 'product_shipping_class' ) ) ), 'image_id' => get_post_thumbnail_id( $product->get_parent_id() ), 'purchase_note' => get_post_meta( $product->get_parent_id(), '_purchase_note', true ), 'catalog_visibility' => $catalog_visibility, ) ); // Pull data from the parent when there is no user-facing way to set props. $product->set_sold_individually( get_post_meta( $product->get_parent_id(), '_sold_individually', true ) ); $product->set_tax_status( get_post_meta( $product->get_parent_id(), '_tax_status', true ) ); $product->set_cross_sell_ids( get_post_meta( $product->get_parent_id(), '_crosssell_ids', true ) ); }