Afisarea intervalului de preturi pentru variatiile de produse in WooCommerce
Lucrez la un magazin online folosind WooCommerce, multe produse au variatii de dimensiune si pret. Exista vreo modalitate de a afisa intervalul de preturi (de la cel mai mare la cel mai mic) al variatiilor pe pagina produsului?

încearcă așa:
/**
* Acest cod trebuie adăugat în fișierul functions.php al temei tale
**/
add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);
function custom_variation_price( $price, $product ) {
$price = '';
if ( !$product->min_variation_price || $product->min_variation_price !== $product->max_variation_price ) $price .= '<span class="from">' . _x('De la', 'min_price', 'woocommerce') . ' </span>';
$price .= woocommerce_price($product->get_price());
if ( $product->max_variation_price && $product->max_variation_price !== $product->min_variation_price ) {
$price .= '<span class="to"> ' . _x('până la', 'max_price', 'woocommerce') . ' </span>';
$price .= woocommerce_price($product->max_variation_price);
}
return $price;
}

Am ajuns la acest thread căutând aceeași soluție pentru produsele grupate. Am ajuns în cele din urmă cu codul de mai jos... așa că îl postez dacă ajută pe alții. Acest cod nu va funcționa pentru produsele variabile, doar pentru cele grupate. Am considerat că este relevant deoarece produsele grupate/variabile sunt destul de similare și am crezut că și alții ar putea da peste acest thread. Probabil că ați putea optimiza elementul span, dar aceasta este versiunea rapidă și simplă care m-a pus pe drumul cel bun!
/*** Returnează intervalul de preț pentru produsele grupate **/
function wc_grouped_price_html( $price, $product ) {
$all_prices = array();
foreach ( $product->get_children() as $child_id ) {
$all_prices[] = get_post_meta( $child_id, '_price', true );
}
if ( ! empty( $all_prices ) ) {
$max_price = max( $all_prices );
$min_price = min( $all_prices );
} else {
$max_price = '';
$min_price = '';
}
$price = '<span class="from">' . _x('De la: ', 'min_price', 'woocommerce') . woocommerce_price( $min_price ) . _x(' până la ', 'max_price', 'woocommerce') . ' </span>' . woocommerce_price( $max_price );
return $price;
}
add_filter( 'woocommerce_grouped_price_html', 'wc_grouped_price_html', 10, 2 );
