Wyświetlanie cen „od” dla produktów z wariantami w WooCommerce

Często w sklepach internetowych zarządzanych przez WooCommerce spotykamy się z wyzwaniem, jak prawidłowo wyświetlać ceny dla produktów z wariantami. Domyślnie WooCommerce pokazuje zakres cen od najniższej do najwyższej, co może być mylące dla klientów. W tym artykule przedstawię snippet, który umożliwia wyświetlanie minimalnej ceny produktu z wariantami z etykietą „Od”.

Problem: Wyświetlanie zakresu cen dla produktów z wariantami

W standardowym ustawieniu WooCommerce, gdy mamy produkty z różnymi wariantami cenowymi, sklep pokazuje zakres cen, np. „20 zł – 50 zł”. Może to być mylące, ponieważ klienci na pierwszy rzut oka mogą nie wiedzieć, która cena odnosi się do którego wariantu

Rozwiązaniem jest wyświetlanie minimalnej ceny z etykietą „Od”, co jest bardziej przejrzyste.

Poniżej zamieszczam fragment kodu (snippet) PHP, który możemy dodać do naszego projektu WordPress. Snippet pozwoli na wyświetlanie bardziej intuicyjnych cen zarówno w kartach produktów jak i w widgetach, np. na stronie głównej.

add_filter('woocommerce_variable_price_html', 'ezpage_variation_price_from', 10, 2);
function ezpage_variation_price_from($price, $product) {
    // Pobierz ceny min/max - zwykle i wariantowe
    $min_var_reg_price = $product->get_variation_regular_price('min', true);
    $min_var_sale_price = $product->get_variation_sale_price('min', true);
    $max_var_reg_price = $product->get_variation_regular_price('max', true);
    $max_var_sale_price = $product->get_variation_sale_price('max', true);

    // Nowy $price, chyba ze wszystkie warianty mają takie same ceny + dodanie "od"
    if (!($min_var_reg_price == $max_var_reg_price && $min_var_sale_price == $max_var_sale_price)) {
        if ($min_var_sale_price < $min_var_reg_price) {
            $price = sprintf(__('Od <del>%1$s</del><ins>%2$s</ins>', 'woocommerce'), wc_price($min_var_reg_price), wc_price($min_var_sale_price));
        } else {
            $price = sprintf(__('Od %1$s', 'woocommerce'), wc_price($min_var_reg_price));
        }
    }

    // Zwrot $price
    return $price;
}

Rezultat w po uruchomieniu kodu prezentuje się następująco: 

Jak działa snippet?

  1. Dodanie filtra: Snippet zaczyna się od dodania filtra woocommerce_variable_price_html przy użyciu funkcji add_filter, która pozwala na modyfikację sposobu wyświetlania cen produktów zmiennych.
  2. Pobieranie minimalnych i maksymalnych cen: Użycie metod get_variation_regular_price oraz get_variation_sale_price pozwala na pobranie minimalnych i maksymalnych cen regularnych i promocyjnych dla wariantów produktu.
  3. Warunkowe formatowanie ceny: Jeśli ceny wariantów nie są równe, kod formatuje cenę, dodając etykietę „Od”. W przypadku ceny promocyjnej, cena regularna jest przekreślona, a cena promocyjna jest wyświetlana obok.
  4. Zwracanie zmodyfikowanej ceny: Na końcu, funkcja zwraca zmodyfikowaną wartość $price, która jest wyświetlana w karcie produktu, ale również w każdym innym miejscu z ceną wariantową.

Dlaczego warto używać tej modyfikacji?

Snippet pomaga w lepszym prezentowaniu cen produktów z wariantami w WooCommerce, co może poprawić przejrzystość oferty i ułatwić klientom zrozumienie cen. Jest to szczególnie przydatne w sklepach oferujących produkty w różnych konfiguracjach cenowych, gdzie minimalizacja zamieszania związanego z cenami może zwiększyć konwersje i satysfakcję klientów.

Scroll to Top