We moved these functions to static class WDP_Functions (but legacy class WDP_Frontend can be used too).
get_gifted_cart_products() just returns array of free items (added by our plugin) as [product_id_1=>qty_1, product_id_2=>qty_2,..]
get_active_rules_for_product( $product_id, $qty = 1, $use_empty_cart = false ) adds passed product to existing cart (or empty cart) and returns array of applied rules , each rule is WDP_Rule object.
add_filter( 'woocommerce_get_price_html', function ( $price, $product ) {
if ( empty( $product ) or empty( WC()->customer ) ) {
return $price;
}
$context = new \ADP\BaseVersion\Includes\Context();
$rule = null;
foreach (
adp_functions()->getActiveRulesForProduct( $product->get_id(), $qty = 50, $use_empty_cart = true ) as $loopRule
) {
// discount table only for 'SingleItem' rule
if ( $loopRule instanceof \ADP\BaseVersion\Includes\Rule\Structures\SingleItemRule && $loopRule->getProductRangeAdjustmentHandler() ) {
$rule = $loopRule;
break;
}
}
if ( ! $rule ) {
return $price;
}
$handler = $rule->getProductRangeAdjustmentHandler();
$ranges = $handler->getRanges();
$range = array_pop( $ranges );
if ( ! $range ) {
return $price;
}
$priceProcessor = new \ADP\BaseVersion\Includes\Product\Processor( $context );
$cartBuilder = new \ADP\BaseVersion\Includes\Cart\CartBuilder( $context );
$cart = $cartBuilder->create( WC()->customer, WC()->session );
$priceProcessor->withCart( $cart );
$priceFunctions = new \ADP\BaseVersion\Includes\External\WC\PriceFunctions( $context );
$processedProd = $priceProcessor->calculateProduct( $product, $range->getFrom() );
return "From " . $priceFunctions->format( $priceFunctions->getProcProductPriceToDisplay( $processedProd ) );
}, PHP_INT_MAX, 2 );get_discounted_product_price( $the_product, $qty, $use_empty_cart = true ) adds passed product to existing cart (or empty cart) and returns new price for this product. We return array [min_price,max_price] for variable products.
get_discounted_products_for_cart( $array_of_products, $plain = false ) adds passed products to empty cart(make cart) and returns products assigned to active rules (set in section "Filter by Product").
It sounds a bit confusing, but you can use this way to get list of products which should be added to pre-build cart to get discounts.
WDP_Functions::get_discounted_products_for_cart(
array( // products will be added to empty WC cart to check conditions
array( 'product_id' => 93, 'qty' => 1 ),
array( 'product_id' => 95, 'qty' => 1 ), // may add 2nd product
),
true // TRUE - plain array , FALSE - split by rules
);