Przedsprzedaż (pre-orders)
Moduł przedsprzedaży pozwala oznaczać produkty jako pre-order, wyświetlać datę premiery i zmieniać tekst przycisku. Przydatny w sklepach z elektroniką, książkami, grami i innymi produktami oferowanymi przed premierą.
Konfiguracja globalna
Dział zatytułowany „Konfiguracja globalna”Przejdź do WooCommerce > Ustawienia > Polski PRO > Przedsprzedaż.
| Ustawienie | Domyślna wartość | Opis |
|---|---|---|
| Tekst przycisku | ”Zamów w przedsprzedaży” | Globalny tekst przycisku dla produktów pre-order |
| Tekst dostępności | ”Dostępne od {date}“ | Szablon tekstu wyświetlanego zamiast stanu magazynowego |
| Format daty | d.m.Y | Format wyświetlania daty premiery |
| Blokuj mieszanie koszyka | Tak | Zabrania dodawania standardowych produktów do koszyka z pre-order |
| Komunikat blokady | ”Produkty w przedsprzedaży muszą być zamawiane osobno.” | Komunikat wyświetlany przy próbie mieszania |
Konfiguracja produktu
Dział zatytułowany „Konfiguracja produktu”Meta pola
Dział zatytułowany „Meta pola”Ustawienia znajdziesz w edycji produktu, zakładka Ogólne.
| Meta pole | Klucz | Typ | Opis |
|---|---|---|---|
| Włącz przedsprzedaż | _polski_preorder_enabled | bool | Oznacza produkt jako pre-order |
| Data premiery | _polski_preorder_release_date | string (Y-m-d) | Data, od której produkt jest dostępny standardowo |
| Tekst przycisku | _polski_preorder_button_text | string | Nadpisuje globalny tekst przycisku dla tego produktu |
| Tekst dostępności | _polski_preorder_availability_text | string | Nadpisuje globalny tekst dostępności |
Ustawienie przez WP-CLI
Dział zatytułowany „Ustawienie przez WP-CLI”wp post meta update 123 _polski_preorder_enabled "yes"wp post meta update 123 _polski_preorder_release_date "2026-06-15"wp post meta update 123 _polski_preorder_button_text "Zamów teraz - premiera 15 czerwca"Ustawienie programowe
Dział zatytułowany „Ustawienie programowe”update_post_meta($product_id, '_polski_preorder_enabled', 'yes');update_post_meta($product_id, '_polski_preorder_release_date', '2026-06-15');Wyświetlanie na froncie
Dział zatytułowany „Wyświetlanie na froncie”Przycisk zakupu
Dział zatytułowany „Przycisk zakupu”Przycisk “Dodaj do koszyka” zmienia się na tekst przedsprzedaży. Dotyczy:
- Strony pojedynczego produktu
- Stron archiwum, kategorii i tagów
- Wyników wyszukiwania
- Bloków WooCommerce (Product Grid, Product Collection)
Tekst dostępności
Dział zatytułowany „Tekst dostępności”Zamiast stanu magazynowego wyświetla się tekst z datą premiery. Placeholder {date} jest zamieniany na datę.
Przykład wyświetlania:
Dostępne od 15.06.2026
Automatyczna dezaktywacja
Dział zatytułowany „Automatyczna dezaktywacja”Po dacie premiery produkt automatycznie wraca do trybu standardowego. WP-Cron sprawdza to codziennie o 00:01.
/** * Akcja wywoływana po automatycznej dezaktywacji przedsprzedaży. * * @param int $product_id ID produktu * @param string $release_date Data premiery (Y-m-d) */do_action('polski_pro/preorder/deactivated', int $product_id, string $release_date);Przykład - powiadomienie klientów o dostępności:
add_action('polski_pro/preorder/deactivated', function (int $product_id, string $release_date): void { $subscribers = get_post_meta($product_id, '_polski_preorder_subscribers', true); if (is_array($subscribers)) { foreach ($subscribers as $email) { wp_mail( $email, 'Produkt jest już dostępny!', sprintf('Produkt %s jest teraz dostępny do zakupu.', get_the_title($product_id)) ); } }}, 10, 2);Walidacja koszyka
Dział zatytułowany „Walidacja koszyka”Blokada mieszania produktów
Dział zatytułowany „Blokada mieszania produktów”Gdy “Blokuj mieszanie koszyka” jest włączone, klient nie może dodać jednocześnie:
- Produktów w przedsprzedaży i standardowych produktów
- Produktów pre-order z różnymi datami premiery (opcjonalnie)
Przy próbie mieszania wyświetla się komunikat blokady.
Hook walidacji
Dział zatytułowany „Hook walidacji”/** * Filtruje, czy koszyk może zawierać mieszane typy produktów. * * @param bool $allow Czy pozwolić na mieszanie (domyślnie false) * @param int $product_id ID dodawanego produktu * @param array $cart_items Aktualne produkty w koszyku */apply_filters('polski_pro/preorder/allow_mixed_cart', bool $allow, int $product_id, array $cart_items): bool;Przykład - zezwolenie na mieszanie dla VIP:
add_filter('polski_pro/preorder/allow_mixed_cart', function (bool $allow, int $product_id, array $cart_items): bool { if (current_user_can('manage_woocommerce')) { return true; } return $allow;}, 10, 3);Shortcode
Dział zatytułowany „Shortcode”Wyświetlanie odliczania do daty premiery:
[polski_preorder_countdown product_id="123" format="days" label="Do premiery pozostało:"]| Parametr | Wymagany | Opis |
|---|---|---|
product_id | Nie | ID produktu (domyślnie bieżący) |
format | Nie | Format: days, full (dni, godziny, minuty) |
label | Nie | Tekst etykiety przed odliczaniem |
Filtr tekstu przycisku
Dział zatytułowany „Filtr tekstu przycisku”/** * Filtruje tekst przycisku przedsprzedaży. * * @param string $text Tekst przycisku * @param \WC_Product $product Obiekt produktu */apply_filters('polski_pro/preorder/button_text', string $text, \WC_Product $product): string;Przykład - dynamiczny tekst z ceną:
add_filter('polski_pro/preorder/button_text', function (string $text, \WC_Product $product): string { return sprintf('Zamów za %s - premiera wkrótce', $product->get_price_html());}, 10, 2);Filtr tekstu dostępności
Dział zatytułowany „Filtr tekstu dostępności”/** * Filtruje tekst dostępności przedsprzedaży. * * @param string $text Tekst dostępności * @param string $release_date Data premiery (Y-m-d) * @param \WC_Product $product Obiekt produktu */apply_filters('polski_pro/preorder/availability_text', string $text, string $release_date, \WC_Product $product): string;Kompatybilność z wariantami
Dział zatytułowany „Kompatybilność z wariantami”Moduł działa z produktami wariantowymi. Każdy wariant ma niezależne ustawienia pre-order:
- Wariant A - standardowy (dostępny od razu)
- Wariant B - pre-order (premiera za 2 tygodnie)
Mieszanie wariantów pre-order i standardowych w jednym produkcie jest dozwolone. Blokada dotyczy tylko mieszania różnych produktów.
Rozwiązywanie problemów
Dział zatytułowany „Rozwiązywanie problemów”Produkt nie przełącza się automatycznie po dacie premiery
Sprawdź, czy WP-Cron działa poprawnie. Jeśli korzystasz z zewnętrznego CRON-a, upewnij się, że wp-cron.php jest wywoływany regularnie. Alternatywnie uruchom ręcznie: wp cron event run polski_pro_preorder_check.
Klient dodał produkty pre-order i zwykłe do koszyka Sprawdź, czy opcja “Blokuj mieszanie koszyka” jest włączona. Wyczyść cache, jeśli korzystasz z wtyczek cache’ujących fragmenty koszyka.
Data premiery wyświetla się w złym formacie
Sprawdź ustawienie “Format daty” w konfiguracji modułu. Format korzysta ze standardowych placeholderów PHP date().
Dalsze kroki
Dział zatytułowany „Dalsze kroki”- Zgłaszaj problemy: GitHub Issues
- Powiązane moduły: Pakiety i dodatki