File "class-wc-product-factory.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/class-wc-product-factory.php
File
size: 2.37 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?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;
}
}
}