Add the following wrapper in Product Wrapper field
Botiga Theme Quick View
.botiga-quick-view-popup-content-ajax
YITH Quick View Plugin
.yith-wcqv-wrapper
Add the following wrapper in Product Wrapper field
Botiga Theme Quick View
.botiga-quick-view-popup-content-ajax
YITH Quick View Plugin
.yith-wcqv-wrapper
Disable/Enable whole plugin function based on selecting categories from Advanced tab
Copy the following code and add it using a plugin called Code Snippets
add_action('variation_price_display_frontend_loaded', function($vpd_frontend){
remove_filter( 'woocommerce_reset_variations_link', array( $vpd_frontend, 'remove_reset_link' ), 20, 1 );
add_filter( 'woocommerce_reset_variations_link', function($link){
$cats = vpd_matched_cat_ids(get_the_ID());
$exin_condition = Variation_Price_Display::get_options()->exin_condition;
if( 'include' === $exin_condition && count( $cats) > 0 ){
return false;
}
elseif( 'include' === $exin_condition && count( $cats) <= 0 ){
return $link;
}
elseif( 'exclude' === $exin_condition && count( $cats) > 0 ){
return $link;
}
elseif( 'exclude' === $exin_condition && count( $cats) <= 0 ){
return false;
}
else{
return false;
}
}, 20, 1 );
});
add_filter( 'disable_vpd_scripts', function($default){
$cats = vpd_matched_cat_ids(get_the_ID());
$exin_condition = Variation_Price_Display::get_options()->exin_condition;
if( 'include' === $exin_condition && count( $cats) > 0 ){
return $default;
}
elseif( 'include' === $exin_condition && count( $cats) <= 0 ){
return true;
}
elseif( 'exclude' === $exin_condition && count( $cats) > 0 ){
return true;
}
elseif( 'exclude' === $exin_condition && count( $cats) <= 0 ){
return $default;
}
else{
return $default;
}
} );
function vpd_matched_cat_ids($product_id){
$terms = wc_get_product_term_ids ( $product_id, 'product_cat' );
$selected_cats = Variation_Price_Display::get_options()->categories;
$cats_int = array_map('intval',$selected_cats);
return array_intersect( $terms, $cats_int );
}
// Display list all variation on single but price type from settings on shop/archive page [it will display list variations on related products] | |
add_filter('vpd_woocommerce_variable_price_html', function($prices, $product, $price, $price_types){ | |
if( is_single() ){ | |
return variation_price_display()->get_frontend()->list_variations_price($prices, $product, $price, 'list_variations'); | |
} | |
return $prices; | |
}, 30, 4); | |
// Display list all variation on single but price type from settings on shop/archive page [it will display price types from plugin settings on related products like shop page] | |
add_filter('vpd_woocommerce_variable_price_html', function($prices, $product, $price, $price_types){ | |
if( did_action('woocommerce_single_product_summary') === 1 && did_action('woocommerce_after_single_product_summary') === 0 ){ | |
return variation_price_display()->get_frontend()->list_variations_price($prices, $product, $price, 'list_variations'); | |
} | |
else{ | |
return $prices; | |
} | |
}, 30, 4); | |
/* Price type: Custom | |
* Display custom price (Starts at: $12) on shop page | |
* but list all variation with price on the single product page | |
* but display Starts at: $12 on the single product page related product section | |
*/ | |
add_filter('vpd_woocommerce_variable_price_html', function($prices, $product, $price, $price_types){ | |
if( is_single() && did_action('woocommerce_single_product_summary') === 0 ){ | |
return variation_price_display()->get_frontend()->list_variations_price($prices, $product, $price, 'list_variations'); | |
} | |
return $prices; | |
}, 30, 4); |
//Display only the variation not the product name | |
add_filter('vpd_pro_list_variation_name', function($value, $variation){ | |
return ucwords( implode( ' , ', $variation->get_variation_attributes() ) ); | |
},10,2); |
add_action('variation_price_display_frontend_loaded', function($Variation_Price_Display_Front){ | |
remove_filter( 'woocommerce_variable_price_html', array( $Variation_Price_Display_Front, 'get_price_html' ), 10, 2 ); | |
add_filter( 'woocommerce_variable_price_html', array( $Variation_Price_Display_Front, 'get_price_html' ), 101, 2 ); | |
},10, 1); | |
add_filter('vpd_woocommerce_variable_price_html', function( $price, $product ){ | |
$Router = new \Wdr\App\Router(); | |
$Wooc = new \Wdr\App\Helpers\Woocommerce(); | |
$ManageDiscount = $Router::$manage_discount; | |
$original_prices_list = $sale_prices_lists = $discount_prices_lists = array(); | |
$available_variations = $Wooc::getProductChildren($product); | |
if (!empty($available_variations)) { | |
$consider_out_of_stock_variants = apply_filters('advanced_woo_discount_rules_do_strikeout_for_out_of_stock_variants', false); | |
$variants_check_limit = (int) apply_filters('advanced_woo_discount_rules_check variants_limit_for_variable_strikeout', 20); | |
$variations = []; | |
if (count($available_variations) > $variants_check_limit) { | |
$variation_prices = $ManageDiscount::$woocommerce_helper->getVariationPrices($product); | |
$calculate_discount_from = $ManageDiscount::$config->getConfig('calculate_discount_from', 'sale_price'); | |
$original_prices = ($calculate_discount_from) == 'regular_price' ? $variation_prices['regular_price'] : $variation_prices['price']; | |
$variations[] = array_keys($original_prices, min($original_prices))[0]; | |
$variations[] = array_keys($original_prices, max($original_prices))[0]; | |
} else { | |
$variations = $available_variations; | |
} | |
foreach ($variations as $variation_id) { | |
if (empty($variation_id)) { | |
continue; | |
} | |
$variation = $Wooc::getProduct($variation_id); | |
if(!$Wooc::variationIsVisible($variation)){ | |
continue; | |
} | |
if(!$Wooc::isProductHasStock($variation) && !$consider_out_of_stock_variants) { | |
continue; | |
} | |
$prices = $ManageDiscount::calculateInitialAndDiscountedPrice($variation, 1); | |
if (!isset($prices['initial_price']) || !isset($prices['discounted_price'])) { | |
$original_prices_list[] = $Wooc::getProductRegularPrice($variation); | |
$sale_prices_lists[] = $Wooc::getProductPrice($variation); | |
continue; | |
} | |
$original_prices_list[] = $prices['initial_price']; | |
$discount_prices_lists[] = $prices['discounted_price']; | |
} | |
} | |
$discount_prices_lists = array_unique($discount_prices_lists); | |
$original_prices_list = array_unique($original_prices_list); | |
$min_price = min($discount_prices_lists); | |
$max_price = max($discount_prices_lists); | |
$min_original_price = min($original_prices_list); | |
$max_original_price = max($original_prices_list); | |
$calculator = $ManageDiscount::$calculator; | |
// VPD Plugin Options | |
$price_types = Variation_Price_Display::get_options()->price_types; | |
$from_before_min_price = !empty( get_option('variation_price_display_option') ) ? Variation_Price_Display::get_options()->from_before_min_price : 'yes'; | |
$up_to_before_max_price = Variation_Price_Display::get_options()->up_to_before_max_price; | |
$format_sale_price = Variation_Price_Display::get_options()->format_sale_price; | |
switch ($price_types) { | |
case "min": | |
$before_min_price = ( $from_before_min_price === 'yes' ) ? __('From ', 'variation-price-display') : ''; | |
// $min_price = wc_price( $product->get_variation_price( 'min', true ) ); | |
$prices = apply_filters( 'vpd_wdr_prefix_min_price', $before_min_price ) . wc_price( $min_price ); | |
break; | |
case "max": | |
$before_max_price = ( $up_to_before_max_price === 'yes' ) ? __('Up To ', 'variation-price-display') : ''; | |
$prices = apply_filters( 'vpd_wdr_prefix_max_price', $before_max_price ) . wc_price( $max_price ); | |
break; | |
case "max_to_min": | |
if( $max_price === $min_price ){ | |
$prices = wc_price( $max_price ); | |
} | |
else{ | |
$prices = wc_format_price_range($max_price , $min_price ); | |
} | |
break; | |
default: | |
if( $min_price === $max_price ){ | |
$prices = wc_price( $min_price ); | |
} | |
else{ | |
// $prices = wc_format_price_range($product->get_variation_price( 'min', true ) , $product->get_variation_price( 'max', true ) ); | |
$prices = wc_format_price_range($min_price , $max_price ); | |
} | |
} | |
return $prices; | |
}, 50, 4); | |