File "class-wc-product-grouped.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/class-wc-product-grouped.php
File
size: 3.47 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
defined('ABSPATH') || exit;
class WC_Product_Grouped extends WC_Product
{
protected $extra_data = array('children' => array());
public function get_type()
{
return 'grouped';
}
public function add_to_cart_text()
{
return apply_filters('woocommerce_product_add_to_cart_text', __('View products', 'woocommerce'), $this);
}
public function add_to_cart_description()
{
return apply_filters('woocommerce_product_add_to_cart_description', sprintf(__('View products in the “%s” group', 'woocommerce'), $this->get_name()), $this);
}
public function is_on_sale($context = 'view')
{
$children = array_filter(array_map('wc_get_product', $this->get_children($context)), 'wc_products_array_filter_visible_grouped');
$on_sale = false;
foreach ($children as $child) {
if ($child->is_purchasable() && !$child->has_child() && $child->is_on_sale()) {
$on_sale = true;
break;
}
}
return 'view' === $context ? apply_filters('woocommerce_product_is_on_sale', $on_sale, $this) : $on_sale;
}
public function is_purchasable()
{
return apply_filters('woocommerce_is_purchasable', false, $this);
}
public function get_price_html($price = '')
{
$tax_display_mode = get_option('woocommerce_tax_display_shop');
$child_prices = array();
$children = array_filter(array_map('wc_get_product', $this->get_children()), 'wc_products_array_filter_visible_grouped');
foreach ($children as $child) {
if ('' !== $child->get_price()) {
$child_prices[] = 'incl' === $tax_display_mode ? wc_get_price_including_tax($child) : wc_get_price_excluding_tax($child);
}
}
if (!empty($child_prices)) {
$min_price = min($child_prices);
$max_price = max($child_prices);
} else {
$min_price = '';
$max_price = '';
}
if ('' !== $min_price) {
if ($min_price !== $max_price) {
$price = wc_format_price_range($min_price, $max_price);
} else {
$price = wc_price($min_price);
}
$is_free = 0 === $min_price && 0 === $max_price;
if ($is_free) {
$price = apply_filters('woocommerce_grouped_free_price_html', __('Free!', 'woocommerce'), $this);
} else {
$price = apply_filters('woocommerce_grouped_price_html', $price . $this->get_price_suffix(), $this, $child_prices);
}
} else {
$price = apply_filters('woocommerce_grouped_empty_price_html', '', $this);
}
return apply_filters('woocommerce_get_price_html', $price, $this);
}
public function get_children($context = 'view')
{
return $this->get_prop('children', $context);
}
public function set_children($children)
{
$this->set_prop('children', array_filter(wp_parse_id_list((array) $children)));
}
public static function sync($product, $save = true)
{
if (!is_a($product, 'WC_Product')) {
$product = wc_get_product($product);
}
if (is_a($product, 'WC_Product_Grouped')) {
$data_store = WC_Data_Store::load('product-' . $product->get_type());
$data_store->sync_price($product);
if ($save) {
$product->save();
}
}
return $product;
}
}