Woocommerce: mostrare il prezzo della variazione predefinita nella lista prodotti?
30 ott 2017, 11:41:14
Visualizzazioni: 24.2K
Voti: 3
C'è un modo per forzare la visualizzazione del prezzo della Variazione Prodotto che ho impostato come predefinita nelle impostazioni della pagina prodotto, invece di mostrare il prezzo più basso e più alto?
Ho questo codice che mostra un solo prezzo, ma il prezzo mostrato non è quello della variazione predefinita:
/*******************************
MOSTRA SOLO UN PREZZO PER LE VARIAZIONI
*********************************/
add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);
function custom_variation_price( $price, $product ) {
$price = '';
$price .= woocommerce_price($product->get_price());
return $price;
}

JPashs
177
Commenti
Tutte le risposte alla domanda
5
1
Prova questo codice:
add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);
function custom_variation_price( $price, $product ) {
$available_variations = $product->get_available_variations();
$selectedPrice = '';
$dump = '';
foreach ( $available_variations as $variation )
{
// $dump = $dump . '<pre>' . var_export($variation['attributes'], true) . '</pre>';
$isDefVariation=false;
foreach($product->get_default_attributes() as $key=>$val){
// $dump = $dump . '<pre>' . var_export($key, true) . '</pre>';
// $dump = $dump . '<pre>' . var_export($val, true) . '</pre>';
if($variation['attributes']['attribute_'.$key]==$val){
$isDefVariation=true;
}
}
if($isDefVariation){
$price = $variation['display_price'];
}
}
$selectedPrice = wc_price($price);
// $dump = $dump . '<pre>' . var_export($available_variations, true) . '</pre>';
return $selectedPrice . $dump;
}

Vivek Athalye
399
3 nov 2017 12:18:19
0
Questa è la soluzione per mostrare il prezzo minimo come prezzo predefinito per i prodotti variabili:
add_filter('woocommerce_variable_price_html','shop_variable_product_price', 10, 2 );
function shop_variable_product_price( $price, $product ){
// Ottiene il prezzo regolare minimo tra le variazioni
$variation_min_reg_price = $product->get_variation_regular_price('min', true);
if(!empty($variation_min_reg_price)) {
// Formatta il prezzo minimo
$price = woocommerce_price( $variation_min_reg_price );
}
else {
// Usa il prezzo regolare del prodotto se non ci sono variazioni
$price = woocommerce_price( $product->regular_price );
}
return $price;
}

Alexander Z.
148
2 nov 2017 15:16:36
1
Aggiornamento del codice di @ Abhinav per mostrare il prezzo minimo nel caso non sia impostata una variazione predefinita:
/**
* Mostra il prezzo della variazione predefinita
* Se non esiste una variazione predefinita, mostra il prezzo minimo
*/
add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);
function custom_variation_price($price, $product) {
$available_variations = $product->get_available_variations();
$selectedPrice = '';
$dump = '';
$defaultArray = array();
foreach ($product->get_default_attributes() as $key => $val) {
// $dump = $dump . '<pre>' . var_export($key, true) . '</pre>';
// $dump = $dump . '<pre>' . var_export($val, true) . '</pre>';
$defaultArray['attribute_' . $key] = $val;
}
// $dump = $dump . '<pre>' . var_export($defaultArray, true) . '</pre>';
if (empty($defaultArray)) {
$price = $product->get_variation_price( 'min', true ); // nessuna variazione predefinita, mostra il prezzo minimo
} else {
foreach ($available_variations as $variation) {
// $dump = $dump . '<pre>' . var_export($variation['attributes'], true) . '</pre>';
$isDefVariation = false;
$result = array_diff($defaultArray, $variation['attributes']);
if (empty($result)) {
$isDefVariation = true;
$price = $variation['display_price'];
break;
}
}
}
$selectedPrice = wc_price($price);
// $dump = $dump . '<pre>' . var_export($available_variations, true) . '</pre>';
return $selectedPrice . $dump;
}

Stijn Sillen
11
10 apr 2021 13:43:53
0
aggiornamento del codice di @vivek poiché il suo codice funziona solo per una singola variazione
add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);
function custom_variation_price($price, $product) {
$available_variations = $product->get_available_variations();
$selectedPrice = '';
$dump = '';
$defaultArray = array();
foreach ($available_variations as $variation) {
// $dump = $dump . '<pre>' . var_export($variation['attributes'], true) . '</pre>';
$isDefVariation = false;
foreach ($product->get_default_attributes() as $key => $val) {
// $dump = $dump . '<pre>' . var_export($key, true) . '</pre>';
// $dump = $dump . '<pre>' . var_export($val, true) . '</pre>';
$defaultArray['attribute_' . $key] = $val;
}
**$result = array_diff($defaultArray, $variation['attributes']);**
**if (empty($result)) {
$isDefVariation = true;
$price = $variation['display_price'];
}**
}
$selectedPrice = wc_price($price);
// $dump = $dump . '<pre>' . var_export($available_variations, true) . '</pre>';
return $selectedPrice . $dump;
}
Questo funzionerà per chiavi di variazione multiple

Abhinav bhardwaj
109
31 lug 2019 21:39:58
Domande correlate
4
risposte