Woocommerce: afișarea prețului variației implicite în lista de produse?
30 oct. 2017, 11:41:14
Vizualizări: 24.2K
Voturi: 3
Există vreo modalitate de a forța afișarea prețului Variației de Produs pe care am setat-o ca implicită în setările paginii produsului, în loc de prețurile minime și maxime?
Am acest cod pentru a afișa doar un singur preț, dar prețul afișat nu este prețul variației implicite:
/*******************************
AFIȘEAZĂ DOAR UN SINGUR PREȚ PENTRU VARIAȚII
*********************************/
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
Comentarii
Toate răspunsurile la întrebare
5
1
Încearcă acest cod:
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
Aceasta este soluția pentru afișarea prețului minim ca valoare implicită pentru produsele variabile:
add_filter('woocommerce_variable_price_html','shop_variable_product_price', 10, 2 );
function shop_variable_product_price( $price, $product ){
$variation_min_reg_price = $product->get_variation_regular_price('min', true);
if(!empty($variation_min_reg_price)) {
$price = woocommerce_price( $variation_min_reg_price );
}
else {
$price = woocommerce_price( $product->regular_price );
}
return $price;
}

Alexander Z.
148
2 nov. 2017 15:16:36
1
Actualizarea codului lui @Abhinav pentru a afișa prețul minim în cazul în care nu este setată o variantă implicită:
/**
* Afișează prețul variantei implicite
* Dacă nu există variantă implicită, afișează prețul minim
*/
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 ); // nu există variantă implicită, afișează prețul minim
} 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
actualizând codul lui @vivek deoarece codul său funcționează doar pentru o singură variație
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;
}
Acest cod va funcționa pentru mai multe chei de variație

Abhinav bhardwaj
109
31 iul. 2019 21:39:58
Întrebări similare
3
răspunsuri
2
răspunsuri