/** * Get composited products prices via their WC_CP_Product wrapper to account for discounts. * * @param int $product_id * @param mixed $variation_id * @param string $component_id * @param WC_Product_Composite $composite * @return double */ private function get_composited_cart_item_price($product_id, $variation_id, $component_id, $composite) { if (!$product_id) { return 0; } $composited_product_wrapper = $composite->get_composited_product($component_id, $product_id); if (!$composited_product_wrapper || !$composited_product_wrapper->exists()) { return false; } $composited_product = $composited_product_wrapper->get_product(); $composited_product_type = $composited_product->product_type; $composited_product_price = 0; $composited_product_wrapper->add_filters(); if ($composited_product_type === 'variable' && $variation_id > 0) { $variation = $composited_product->get_child($variation_id); if ($variation) { $composited_product_price = $variation->get_price(); } } else { $composited_product_price = $composited_product->get_price(); } $composited_product_wrapper->remove_filters(); return $composited_product_price; }
/** * Get composited products prices via their WC_CP_Product wrapper to account for discounts. * * @param int $product_id * @param mixed $variation_id * @param string $component_id * @param WC_Product_Composite $composite * @return double */ function wc_cp_get_composited_product_price($product_id, $variation_id, $component_id, $composite) { if (!$product_id) { return 0; } $composited_product_wrapper = $composite->get_composited_product($component_id, $product_id); if (!$composited_product_wrapper || !$composited_product_wrapper->exists()) { return false; } $composited_product = $composited_product_wrapper->get_product(); $composited_product_type = $composited_product->product_type; $composited_product_price = 0; $composited_product_wrapper->add_filters(); if ($composited_product_type === 'simple') { $composited_product_price = $composited_product->get_price(); } elseif ($composited_product_type === 'bundle') { if (!$composited_product->is_priced_per_product()) { $composited_product_price = $composited_product->get_price(); } } elseif ($composited_product_type === 'variable' && $variation_id > 0) { $variation = $composited_product->get_child($variation_id); if ($variation) { $composited_product_price = $variation->get_price(); } } $composited_product_wrapper->remove_filters(); return $composited_product_price; }