Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
woocommerce
/
includes
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php defined('ABSPATH') || exit; class WC_Product_Factory { public function get_product($product_id = false, $deprecated = array()) { $product_id = $this->get_product_id($product_id); if (!$product_id) { return false; } $product_type = $this->get_product_type($product_id); if (!empty($deprecated)) { wc_deprecated_argument('args', '3.0', 'Passing args to the product factory is deprecated. If you need to force a type, construct the product class directly.'); if (isset($deprecated['product_type'])) { $product_type = $this->get_classname_from_product_type($deprecated['product_type']); } } $classname = $this->get_product_classname($product_id, $product_type); try { return new $classname($product_id, $deprecated); } catch (Exception $e) { return false; } } public static function get_product_classname($product_id, $product_type) { $classname = apply_filters('woocommerce_product_class', self::get_classname_from_product_type($product_type), $product_type, 'variation' === $product_type ? 'product_variation' : 'product', $product_id); if (!$classname || !class_exists($classname)) { $classname = 'WC_Product_Simple'; } return $classname; } public static function get_product_type($product_id) { $override = apply_filters('woocommerce_product_type_query', false, $product_id); if (!$override) { return WC_Data_Store::load('product')->get_product_type($product_id); } else { return $override; } } public static function get_classname_from_product_type($product_type) { return $product_type ? 'WC_Product_' . implode('_', array_map('ucfirst', explode('-', $product_type))) : false; } private function get_product_id($product) { global $post; if (false === $product && isset($post, $post->ID) && 'product' === get_post_type($post->ID)) { return absint($post->ID); } elseif (is_numeric($product)) { return $product; } elseif ($product instanceof WC_Product) { return $product->get_id(); } elseif (!empty($product->ID)) { return $product->ID; } else { return false; } } }