Checkout w WooCommerce: Co, gdzie i jak dodać, żeby odzyskać porzucone koszyki (Poradnik + Snippety)

Bądźmy szczerzy: checkout to miejsce, gdzie albo zarabiasz, albo tracisz klienta. Statystyki są brutalne – według Baymard Institute prawie 70% koszyków jest porzucanych.

Dlaczego? Bo strona ładuje się wolno, proces jest skomplikowany, albo (co gorsza) klient w ostatniej chwili traci zaufanie.

Dziś nie będziemy teoretyzować. Pokażę Ci konkretną „mapę” checkoutu, powiem co wcisnąć w nowy checkout blokowy, a co w stary klasyczny, i dam gotowe kawałki kodu, które możesz wkleić u siebie od zaraz.

Mapa Checkoutu – Psychologia w 3 krokach

Zanim przejdziesz do kodu, musisz zrozumieć, gdzie patrzy klient. To nie jest kwestia estetyki, tylko konwersji.

  1. Przed formularzem (Motywacja): Tu musi się znaleźć informacja o darmowej dostawie. Jeśli klientowi brakuje 15 zł do darmowej wysyłki, powiedz mu to TERAZ.
  2. W trakcie (Ułatwienie): Wywal wszystko, co zbędne. Pytasz o nazwę firmy klienta detalicznego? Pytasz o drugą linię adresu? To prosta droga do porzucenia koszyka.
  3. Przyciski „Zamawiam” (Zaufanie): To moment największego stresu. Tutaj muszą być Trust Badges (kłódki, gwarancje, logotypy płatności). To potrafi podbić konwersję nawet o 42%.

Checkout Blokowy (Gutenberg) vs. Klasyczny Shortcode

Od WooCommerce 8.3 standardem są bloki. I tu zaczynają się schody, bo edycja wygląda inaczej.

Jeśli masz nowy Checkout Blokowy:

Nie grzebiesz w plikach PHP (przynajmniej na początku).

  1. Idziesz do Strony → Zamówienie.
  2. Klikasz na blok Checkout.
  3. Otwierasz Widok Listy (to te trzy kreseczki na górze).
  4. Dorzucasz bloki Obrazek (dla Trust Badges) lub Akapit tam, gdzie ich potrzebujesz.

Pro tip: Woo 8.6+ wprowadziło Additional Checkout Fields API. Możesz dodawać pola (np. wiadomość na prezent) bez wtyczek, ale wymaga to odrobiny kodu w functions.php.

Jeśli masz Checkout Klasyczny ([woocommerce_checkout]):

Tutaj rządzimy hookami. Masz ich do dyspozycji aż 28, ale najważniejsze są dwa:

  • woocommerce_review_order_before_submit – idealne miejsce na gwarancje i info o zwrotach.
  • woocommerce_review_order_after_submit – idealne na logotypy płatności i certyfikaty bezpieczeństwa.

Gotowce do skopiowania (Snippety)

Oto „mięso”. Kody wklejasz do functions.php w motywie potomnym lub przez wtyczkę Code Snippets.

1. Trust Badges pod przyciskiem „Kupuję i płacę”

Must-have. Klient widzi przycisk płatności i od razu dostaje potwierdzenie: „To bezpieczne”.

add_action( 'woocommerce_review_order_after_submit', 'add_trust_badges_after_submit' );

function add_trust_badges_after_submit() {
    ?>
    <div style="display: flex; justify-content: center; gap: 15px; margin-top: 20px; text-align: center;">
        <div>🔒<br><small>Bezpieczne<br>płatności</small></div>
        <div>↩️<br><small>30 dni<br>na zwrot</small></div>
        <div>🚚<br><small>Szybka<br>wysyłka</small></div>
    </div>
    <?php
}

2. „Brakuje Ci X zł do darmowej dostawy”

Najlepszy sposób na podbicie średniej wartości koszyka (AOV).

add_action( 'woocommerce_before_checkout_form', 'show_free_shipping_notice' );

function show_free_shipping_notice() {
    $min_amount = 200; // Tu wpisz swoją kwotę
    $current_total = WC()->cart->get_subtotal();
    
    if ( $current_total < $min_amount ) {
        $remaining = $min_amount - $current_total;
        printf(
            '<div style="background: #e0f2fe; color: #0369a1; padding: 15px; margin-bottom: 20px; border-radius: 5px; text-align: center;">
                🚚 Dorzuć coś za <strong>%s</strong>, a wysyłkę masz za darmo!
            </div>',
            wc_price( $remaining )
        );
    }
}

3. Sprzątanie formularza (Usunięcie zbędnych pól)

Krótszy formularz = więcej sprzedaży. Proste.

add_filter( 'woocommerce_checkout_fields', 'remove_unnecessary_checkout_fields' );

function remove_unnecessary_checkout_fields( $fields ) {
    // Wywalamy firmę (chyba że sprzedajesz tylko B2B)
    unset( $fields['billing']['billing_company'] );
    unset( $fields['shipping']['shipping_company'] );
    // Wywalamy drugą linię adresu i zbędne pola
    unset( $fields['billing']['billing_address_2'] );
    unset( $fields['shipping']['shipping_address_2'] );
    
    return $fields;
}

Checklista na koniec

Zanim zamkniesz ten wpis, wejdź na swój checkout w trybie incognito i sprawdź:

  • Czy pod przyciskiem zakupu są ikony bezpieczeństwa/płatności?
  • Czy widzę, ile brakuje do darmowej dostawy?
  • Czy muszę wypełniać pole „Firma” jako osoba prywatna? (Jeśli tak, popraw to natychmiast).
  • Czy linki do regulaminu i polityki prywatności są widoczne?

Mniej znaczy więcej. Ułatw klientom wydawanie pieniędzy.