Przejdź do głównej zawartości

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ą.

Przejdź do WooCommerce > Ustawienia > Polski PRO > Przedsprzedaż.

UstawienieDomyś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 datyd.m.YFormat wyświetlania daty premiery
Blokuj mieszanie koszykaTakZabrania 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

Ustawienia znajdziesz w edycji produktu, zakładka Ogólne.

Meta poleKluczTypOpis
Włącz przedsprzedaż_polski_preorder_enabledboolOznacza produkt jako pre-order
Data premiery_polski_preorder_release_datestring (Y-m-d)Data, od której produkt jest dostępny standardowo
Tekst przycisku_polski_preorder_button_textstringNadpisuje globalny tekst przycisku dla tego produktu
Tekst dostępności_polski_preorder_availability_textstringNadpisuje globalny tekst dostępności
Okno terminala
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"
update_post_meta($product_id, '_polski_preorder_enabled', 'yes');
update_post_meta($product_id, '_polski_preorder_release_date', '2026-06-15');

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)

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

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);

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.

/**
* 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);

Wyświetlanie odliczania do daty premiery:

[polski_preorder_countdown product_id="123" format="days" label="Do premiery pozostało:"]
ParametrWymaganyOpis
product_idNieID produktu (domyślnie bieżący)
formatNieFormat: days, full (dni, godziny, minuty)
labelNieTekst etykiety przed odliczaniem
/**
* 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);
/**
* 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;

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.

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().

Ta strona ma wyłącznie charakter informacyjny i nie stanowi porady prawnej. Przed wdrożeniem skonsultuj się z prawnikiem. Polski for WooCommerce jest oprogramowaniem open source (GPLv2) dostarczanym bez gwarancji.