Spis treści
Każda kolejna wtyczka to licencja do opłacenia, aktualizacja do pilnowania i skrypty doładowywane na każdej podstronie. Tymczasem sporą część zmian w WooCommerce da się zrobić kilkunastoma linijkami kodu — bez instalowania czegokolwiek. Poniżej praktyczny przegląd: gdzie umieścić kod, jak działają hooki i filtry oraz gotowe fragmenty do najczęstszych zadań.
Gdzie umieszczać kod — i gdzie absolutnie nie
Zanim skopiujesz cokolwiek, jedna rzecz do ustalenia. Nigdy nie edytuj plików motywu nadrzędnego ani rdzenia WordPressa i WooCommerce. Pierwsza aktualizacja nadpisze zmiany i zostaniesz z pytaniem, dlaczego „coś przestało działać”.
Trzy poprawne miejsca:
| Miejsce | Kiedy |
|---|---|
functions.php motywu potomnego | Zmiany związane z wyglądem i układem, powiązane z konkretnym motywem |
Mała wtyczka własna (jeden plik w wp-content/plugins/) | Zmiany funkcjonalne, które mają przetrwać zmianę motywu — rekomendowane |
| Wtyczka do fragmentów kodu | Gdy nie masz dostępu przez FTP; wygodne, ale dokłada warstwę zależności |
Zanim wgrasz cokolwiek na produkcję: kopia zapasowa i test na środowisku testowym. Pojedynczy błąd składni w PHP potrafi wywalić całą stronę — procedurę bezpiecznego wdrażania opisujemy przy aktualizacjach WordPressa.
Hook czy filtr — różnica w jednym zdaniu
Akcja (add_action) coś dodaje w określonym miejscu. Filtr (add_filter) coś zmienia po drodze.
// AKCJA — dopisuje treść w konkretnym punkcie strony produktu
add_action( 'woocommerce_before_add_to_cart_button', 'wsk_info_o_wysylce' );
function wsk_info_o_wysylce() {
echo '<p class="wsk-wysylka">Wysyłka w 24 h przy zamówieniu do 14:00.</p>';
}
// FILTR — modyfikuje wartość, którą WooCommerce i tak by wyświetlił
add_filter( 'woocommerce_product_single_add_to_cart_text', 'wsk_tekst_przycisku' );
function wsk_tekst_przycisku() {
return 'Zamawiam';
}
Nazwy funkcji zawsze poprzedzaj własnym prefiksem (tu: wsk_). Funkcja o nazwie info_o_wysylce prędzej czy później zderzy się z identyczną nazwą z jakiejś wtyczki i strona przestanie działać.
Mapa najważniejszych punktów zaczepienia
Warto znać kilkanaście miejsc, w których najczęściej coś się dodaje:
Strona produktu – woocommerce_before_single_product — na samej górze – woocommerce_single_product_summary — blok z tytułem, ceną i przyciskiem (kolejność ustala priorytet) – woocommerce_before_add_to_cart_button / woocommerce_after_add_to_cart_button – woocommerce_product_meta_end — pod kategoriami i tagami
Koszyk i zamówienie – woocommerce_before_cart / woocommerce_after_cart_table – woocommerce_before_checkout_form — komunikat nad formularzem – woocommerce_review_order_before_submit — tuż nad przyciskiem płatności – woocommerce_thankyou — strona podziękowania
Listing produktów – woocommerce_before_shop_loop / woocommerce_after_shop_loop – woocommerce_before_shop_loop_item_title
Priorytet (trzeci argument add_action) decyduje o kolejności. Niższa liczba = wcześniej. Domyślnie 10.
Gotowe fragmenty do najczęstszych zadań
Dodanie pola NIP do zamówienia
Potrzebne przy fakturach dla firm — kontekst wdrożeniowy opisujemy w tekście o automatycznych fakturach w WooCommerce.
add_filter( 'woocommerce_checkout_fields', 'wsk_dodaj_nip' );
function wsk_dodaj_nip( $fields ) {
$fields['billing']['billing_nip'] = array(
'label' => 'NIP (jeśli chcesz fakturę na firmę)',
'required' => false,
'class' => array( 'form-row-wide' ),
'priority' => 35,
);
return $fields;
}
Ukrycie pól, których nie potrzebujesz
Każde zbędne pole w koszyku to spadek liczby dokończonych zamówień — piszemy o tym szerzej przy porzuceniach koszyka.
add_filter( 'woocommerce_checkout_fields', 'wsk_usun_pola' );
function wsk_usun_pola( $fields ) {
unset( $fields['billing']['billing_company'] );
unset( $fields['billing']['billing_address_2'] );
return $fields;
}
Darmowa dostawa od kwoty — komunikat motywujący
add_action( 'woocommerce_before_cart', 'wsk_do_darmowej_dostawy' );
function wsk_do_darmowej_dostawy() {
$prog = 200;
$koszyk = WC()->cart->get_displayed_subtotal();
if ( $koszyk < $prog ) {
$brakuje = wc_price( $prog - $koszyk );
echo '<div class="woocommerce-info">Do darmowej dostawy brakuje ' . $brakuje . '.</div>';
}
}
Zmiana liczby produktów w wierszu
add_filter( 'loop_shop_columns', 'wsk_kolumny' );
function wsk_kolumny() {
return 4;
}
Ukrycie metody wysyłki dla wybranych produktów
Przydatne przy towarach gabarytowych, których nie wyśle kurier standardowy:
add_filter( 'woocommerce_package_rates', 'wsk_ukryj_metode', 10, 2 );
function wsk_ukryj_metode( $rates, $package ) {
foreach ( $package['contents'] as $item ) {
if ( has_term( 'gabaryt', 'product_cat', $item['product_id'] ) ) {
unset( $rates['flat_rate:1'] ); // podmień na ID swojej metody
break;
}
}
return $rates;
}
Shortcode — kiedy nadal są przydatne
WooCommerce udostępnia zestaw shortcode’ów pozwalających wstawić produkty w dowolne miejsce — także w treść wpisu na blogu albo na stronie zbudowanej w Elementorze:
[products limit="8" columns="4" orderby="popularity"]
[products category="karma-sucha" limit="4"]
[products on_sale="true" limit="4"]
[product_page id="99"]
[add_to_cart id="99"]
Dwie uwagi praktyczne:
- Koszyk i zamówienie mają dziś postać bloków, nie shortcode’ów. Starsze
[woocommerce_cart]i[woocommerce_checkout]nadal działają dla zgodności wstecznej, ale nowe wdrożenia buduje się na blokach. - Strony koszyka, zamówienia i konta muszą być wykluczone z cache. To najczęstsza przyczyna sytuacji „klient widzi cudzy koszyk”.
Shortcode dobrze sprawdza się przy sprzedaży wplecionej w treść — np. artykuł poradnikowy z blokiem powiązanych produktów na końcu. To prosty sposób, żeby blog realnie pracował na sprzedaż.
Nadpisywanie szablonów — ostateczność, nie pierwszy wybór
WooCommerce pozwala skopiować plik szablonu do folderu woocommerce/ w motywie i tam go zmienić. Działa, ale ma poważną wadę: nadpisany szablon nie dostaje aktualizacji. Po większym wydaniu WooCommerce zobaczysz ostrzeżenie o nieaktualnych szablonach, a w gorszym scenariuszu — zepsuty układ.
Kolejność wyboru, od najlepszej:
- Ustawienie w panelu WooCommerce
- Hook lub filtr
- CSS
- Nadpisanie szablonu — tylko gdy pierwsze trzy zawiodły
Kiedy przestaje się to opłacać
Fragmenty kodu są świetne do pojedynczych zmian. Przestają być dobrym rozwiązaniem, gdy:
- masz kilkadziesiąt snippetów i nikt nie pamięta, który co robi,
- zmiana wymaga własnych tabel w bazie albo panelu ustawień,
- kod musi działać identycznie na kilku sklepach,
- pojawia się integracja z zewnętrznym systemem.
Wtedy właściwym krokiem jest uporządkowanie tego w dedykowaną wtyczkę — z dokumentacją i wersjonowaniem. Jeśli potrzebujesz wsparcia przy takim porządkowaniu albo przy nietypowej funkcji, zajmujemy się tym w ramach rozwiązań dedykowanych, a przy budowie nowego sklepu planujemy to od razu w projekcie sklepu WooCommerce.
[DO UZUPEŁNIENIA] — mocny akcent: przykład z Waszego wdrożenia, w którym zastąpienie kilku wtyczek własnymi snippetami skróciło czas ładowania. Konkretne milisekundy przed/po.
FAQ — hooki i personalizacja WooCommerce
Czy muszę umieć programować, żeby użyć tych fragmentów? Do skopiowania i podmiany wartości — nie. Do modyfikowania logiki i diagnozowania błędów — tak. Zasada bezpieczeństwa: jeśli nie rozumiesz, co robi dany fragment, nie wgrywaj go na produkcję bez testu.
Gdzie znaleźć listę wszystkich hooków WooCommerce? W oficjalnej dokumentacji dla deweloperów oraz w kodzie źródłowym wtyczki — nazwy hooków są tam widoczne przy każdym do_action i apply_filters. To najpewniejsze źródło, bo zawsze aktualne.
Czy hooki spowalniają sklep? Same w sobie nie. Spowalnia zła implementacja — np. zapytanie do bazy wykonywane w pętli produktów na stronie kategorii. Skutki wydajnościowe sprawdzisz w kontekście Core Web Vitals.
Co zrobić, gdy po wgraniu kodu strona wyświetla białą stronę? Usuń wgrany fragment przez FTP albo menedżer plików hostingu. Jeśli kod był w motywie potomnym — cofnij zmianę w functions.php. Włącz WP_DEBUG, żeby zobaczyć komunikat błędu zamiast pustej strony.
Czy zmiany przetrwają aktualizację WooCommerce? Hooki i filtry — zwykle tak, bo są częścią publicznego API i rzadko znikają. Nadpisane szablony — nie zawsze; wymagają przeglądu po większych wydaniach.
Autor: Adrian Kamiński — Websky Studio, Poznań. Projektant i developer — sklepy WooCommerce dostrajane kodem, nie stosem wtyczek.
Twoja opinia
Czy ten artykuł był pomocny?
Jedno kliknięcie — pomaga mi wybierać kolejne tematy.

