Ten kurs przeprowadzi Cię przez kompletny proces sprzedaży plików cyfrowych w WooCommerce: od globalnych ustawień sklepu, przez dodanie pliku do produktu, przyznanie dostępu w zamówieniu, aż po miejsce, w którym klient pobiera zakupiony plik ze swojego konta.
Pracujemy na rzeczywistym przykładzie: e-booku „E-book: Wiosenny warsztat w ogrodzie – przewodnik dla nauczycieli”. Plik jest archiwum ZIP (ok. 24 MB). Na końcu klient Paweł Nosko pobiera go z konta jako przycisk KURS A.
Część 1. Globalne ustawienia produktów do pobrania
Zanim dodasz plik do konkretnego produktu, musisz wiedzieć, jak sklep internetowy WooCommerce w ogóle serwuje pliki. Te ustawienia obowiązują cały sklep: każdy e-book, ZIP, PDF i materiał kursowy będzie pobierany według reguł, które tu wybierzesz.
Krok 1. Wejdź do ustawień WooCommerce
W panelu WordPressa, w lewym menu, rozwiń WooCommerce i kliknij Ustawienia.
Krok 2. Otwórz kartę Produkty
Na górze strony ustawień zobaczysz poziome karty: Ogólne, Produkty, Wysyłka, Płatności itd. Domyślnie aktywna jest karta Ogólne (niebieska kreska pod spodem). Kliknij Produkty.
Krok 3. Wejdź w podkartę Produkty do pobrania
Pod kartą Produkty pojawia się drugie, węższe menu, rozdzielone pionowymi kreskami:
- Ogólne — nazwy jednostek, waga, wymiary, recenzje.
- Magazyn — stany magazynowe, powiadomienia o niskim stanie.
- Produkty do pobrania — to nasz cel: sposób dostarczania plików i ograniczenia dostępu.
- Dozwolone katalogi pobierania — biała lista folderów, z których WooCommerce w ogóle pozwoli serwować pliki (ważne, gdy produkt edytuje kilku użytkowników).
- Zaawansowane — pozostałe opcje produktów.
Kliknij Produkty do pobrania.
Krok 4. Ekran ustawień — dokładny opis każdej opcji
Otwiera się strona zatytułowana Produkty do pobrania. To serce konfiguracji. Poniżej rozbieramy każde pole, tak jak widać je na ekranie.
1. Sposób pobierania plików
To najważniejsze ustawienie na tej stronie. Lista rozwijana decyduje, jak serwer fizycznie oddaje plik przeglądarce klienta. WooCommerce nie wysyła pliku jako załącznika e-maila. Zamiast tego wystawia klientowi specjalny, kontrolowany odnośnik. Dopiero po kliknięciu ten odnośnik jest obsługiwany jedną z trzech metod.
Na zrzucie wybrana jest opcja Wymuszaj pobieranie. To dobry, bezpieczny wybór na start — szczególnie przy e-bookach i paczkach ZIP rzędu kilkudziesięciu megabajtów.
Pod listą WooCommerce dopisuje wskazówkę o metodzie X-Accel-Redirect na serwerach NGINX oraz odnośnik do instrukcji konfiguracji. Nie ignoruj tej uwagi, jeśli Twój hosting stoi na NGINX i chcesz kiedyś przejść na metodę serwerową.
Poniżej rozpisujemy wszystkie trzy pozycje listy oraz powiązany z nimi checkbox.
Opcja A. Wymuszaj pobieranie (Force Downloads)
Co się dzieje technicznie. Klient klika odnośnik w stylu https://twojsklep.pl/?download_file=32&order=wc_order_...&email=...&key=.... WordPress sprawdza, czy ten człowiek ma prawo do pliku (zamówienie, e-mail, klucz, limit, data ważności). Jeśli tak, PHP odczytuje plik z dysku i wysyła go do przeglądarki z nagłówkami, które każą przeglądarce pobrać plik, a nie otworzyć go jako stronę. Prawdziwy adres pliku na serwerze (np. w wp-content/uploads/woocommerce_uploads/) nigdy nie pojawia się w pasku adresu.
Dlaczego to jest bezpieczne.
- Nie da się skopiować „gołego” URL-a pliku i rozesłać go znajomym — bo takiego publicznego URL-a klient w ogóle nie dostaje.
- Każde kliknięcie przechodzi przez WooCommerce, więc działają limity pobrań, data wygaśnięcia i wymóg logowania.
- Plik może leżeć w katalogu chronionym plikiem
.htaccess(WooCommerce dodaje go do folderuwoocommerce_uploads).
Ograniczenia.
- Plik leci przez PHP. PHP ma limity czasu wykonania (
max_execution_time) i pamięci (memory_limit). Przy dużych plikach (setki MB, filmy, paczki kursów) pobieranie może się urwać w połowie albo zwrócić błąd 500. - Wymagana jest włączona funkcja PHP
allow_url_fopen. Jeśli hosting ją wyłączył, ta metoda nie zadziała. Sprawdzisz to wphpinfo()albo u administratora serwera. - Przy wielu równoczesnych pobraniach PHP-FPM / Apache zużywa procesy i pamięć. Mały VPS może się zatkać.
Kiedy wybierać. E-booki, PDF-y, ZIP-y do ok. 50–100 MB, typowy sklep internetowy z materiałami edukacyjnymi. Dokładnie taki scenariusz jak w tym kursie (paczka 24 MB).
Opcja B. X-Accel-Redirect / X-Sendfile
Co się dzieje technicznie. WooCommerce nadal sprawdza uprawnienia w PHP. Zamiast jednak samemu czytać i wypychać plik, PHP odsyła serwerowi WWW specjalny nagłówek:
- na NGINX:
X-Accel-Redirectze ścieżką wewnętrzną do pliku, - na Apache:
X-Sendfile(modułmod_xsendfile).
Serwer WWW, który i tak jest do tego stworzony, oddaje plik klientowi. PHP kończy pracę w ułamku sekundy i wraca do obsługi kolejnych żądań.
Zalety.
- Najwydajniejsza z trzech metod. Duże pliki (setki MB, GB) nie blokują PHP.
- Nadal chronisz prawdziwą ścieżkę — klient dostaje ten sam „magiczny” odnośnik WooCommerce, a nie publiczny URL.
- Działają limity, wygasanie i logowanie, bo bramką nadal jest WooCommerce.
- Pliki mogą (i powinny) leżeć w katalogu niedostępnym z przeglądarki; serwer oddaje je tylko po pozytywnym nagłówku z PHP.
Wymagania.
- Moduł musi być zainstalowany i włączony. Na współdzielonym hostingu często go nie ma. Zawsze potwierdź to u hostingu zanim włączysz tę opcję w sklepie.
- Na NGINX sama zmiana w WooCommerce nie wystarczy. Trzeba dodać w konfiguracji serwera wewnętrzną lokalizację (internal location), która mapuje nagłówek na fizyczny katalog z plikami. Bez tego klient dostanie błąd 404 albo pustą stronę. Stąd ta szara wskazówka pod listą na zrzucie.
- Pliki powinny leżeć w katalogu, którego NGINX / Apache nie serwuje publicznie (nie w zwykłej Bibliotece mediów).
Kiedy wybierać. Duże paczki kursów, pliki wideo, sklep z dużym ruchem pobrań, VPS / serwer dedykowany, na którym masz kontrolę nad NGINX lub Apache.
Opcja C. Tylko przekierowanie (niebezpieczne) — Redirect only
Co się dzieje technicznie. WooCommerce po sprawdzeniu uprawnień robi zwykłe przekierowanie HTTP (302/301) na prawdziwy adres pliku, np. https://twojsklep.pl/wp-content/uploads/2026/08/plik.zip albo URL w chmurze (Google Drive, Dropbox, S3). Od tego momentu przeglądarka rozmawia już bezpośrednio z tym adresem — WooCommerce wypada z gry.
Dlaczego WooCommerce nazywa to niebezpiecznym.
- Kto pozna URL, ten pobierze plik. Klient może skopiować link z paska adresu albo z narzędzi deweloperskich i wrzucić na forum.
- Limity pobrań i data wygaśnięcia działają tylko „na papierze”: WooCommerce policzy pierwsze kliknięcie, ale kolejne wejścia pod goły URL omijają sklep.
- Wymóg zalogowania też przestaje chronić sam plik — chroni jedynie pierwszy klik w panelu.
- Roboty, cache, CDN i podgląd linków w komunikatorach mogą zaindeksować albo zcache’ować publiczny plik.
Kiedy mimo wszystko bywa potrzebne.
- Plik leży poza serwerem sklepu: Google Drive, niektóre CDN-y, zewnętrzny storage, który nie umie współpracować z PHP ani z X-Sendfile.
- Niektóre chmury (typowo Google Drive) działają wyłącznie przy przekierowaniu — metody A i B zwrócą błąd.
- Plik jest i tak publiczny (darmowy lead magnet) i nie zależy Ci na kontroli dostępu.
Rekomendacja w tym kursie. Nie wybieraj tej opcji jako głównej metody. Zostaw Wymuszaj pobieranie, a jeśli hosting na to pozwoli — rozważ X-Accel-Redirect / X-Sendfile.
Checkbox: „Zezwól na użycie przekierowania jako ostateczność (niebezpieczne)”
Ten checkbox pojawia się przy metodach A i B. Na zrzucie jest odznaczony — i tak powinno zostać, dopóki nie masz konkretnego powodu.
Co robi. Jeśli wybrana metoda (wymuszenie albo X-Sendfile) nie potrafi oddać konkretnego pliku, WooCommerce w ostateczności spada na „Tylko przekierowanie”. Typowe powody porażki:
- plik jest zdalny (inny host, S3, Google Drive) i PHP nie może go odczytać,
- brak
allow_url_fopen, - źle skonfigurowany X-Accel-Redirect,
- plik leży poza dozwolonym katalogiem.
Szary opis pod checkboxem mówi wprost: jeśli „Wymuszaj pobieranie” albo „X-Accel-Redirect/X-Sendfile” zawiedzie, system użyje trybu „Tylko przekierowanie”.
Ryzyko. Identyczne jak przy opcji C: w momencie awarii klient dostaje publiczny URL. Część plików w sklepie może być chroniona, a część — przypadkiem wyciekać.
Kiedy zaznaczyć. Świadomie mieszasz lokalne pliki z plikami w chmurze i wolisz, żeby klient dostał plik „jakoś”, niż komunikat o błędzie. Wtedy włącz, przetestuj i monitoruj logi WooCommerce (od wersji 5.5.2 sklep loguje, kiedy spada na przekierowanie).
2. Ograniczenia dostępu
Ta sekcja nie mówi jak oddać plik, tylko komu i kiedy.
Checkbox: „Pobieranie wymaga zalogowania”
Na zrzucie: odznaczony.
Gdy zaznaczysz. Klient musi być zalogowany na konto w sklepie, żeby kliknięcie odnośnika cokolwiek pobrało. Gość, który ma tylko link z e-maila, zobaczy prośbę o logowanie (albo błąd, jeśli nie ma konta).
Szara adnotacja WooCommerce: opcja nie dotyczy pobrań gości. To ważny niuans. Jeśli w sklepie masz włączone zakupy bez rejestracji (guest checkout), gość i tak dostanie plik bez logowania. Żeby ta opcja miała pełny sens, wyłącz zakupy bez konta: WooCommerce → Ustawienia → Konta i prywatność i odznacz możliwość składania zamówień jako gość.
Zalety zaznaczenia. Trudniej rozsyłać linki. Łatwiej śledzić, kto pobiera. Naturalne przy kursach i materiałach „na konto”.
Wady. Klient, który zgubił hasło albo kupił z innego adresu e-mail, nie pobierze pliku, dopóki się nie zaloguje. Więcej zgłoszeń do obsługi.
W tym kursie. Pole jest puste, więc klient może pobrać plik z e-maila albo z konta — oba tory działają. Jeśli sprzedajesz płatne materiały szkoleniowe i chcesz twardziej trzymać dostęp, zaznacz to pole i wymagaj kont.
Checkbox: „Przyznaj dostęp do pobieranych produktów po płatności”
Na zrzucie: zaznaczony. To jedna z najczęściej źle rozumianych opcji w całym WooCommerce.
WooCommerce ma dwa statusy, które nas tu interesują:
- W trakcie realizacji (Processing) — płatność wpłynęła, zamówienie jest opłacone, ale sklep jeszcze go „nie zamknął” (np. czeka na wysyłkę produktu fizycznego).
- Zrealizowane (Completed) — zamówienie zakończone.
Gdy to pole jest zaznaczone (jak na zrzucie): klient dostaje prawo do plików już przy statusie W trakcie realizacji. Nie musi czekać, aż zamówienie stanie się „Zrealizowane”.
Gdy odznaczysz: pliki pojawią się dopiero przy statusie Zrealizowane.
Po co to istnieje. Sprzedajesz zestaw: książka papierowa + PDF. Po opłaceniu zamówienie idzie do „W trakcie realizacji”, bo paczka jeszcze nie wyszła. Bez tej opcji klient czekałby na PDF-a, aż kurier dowiezie papier. Z opcją — PDF leci od razu po płatności, książka idzie osobno.
Produkty wyłącznie cyfrowe (wirtualne + do pobrania). WooCommerce po udanej płatności sam ustawia status Zrealizowane. Wtedy ta opcja nie zmienia wiele — klient i tak dostaje plik. Ma znaczenie przy:
- produktach tylko „do pobrania”, ale nie „wirtualnych” (sklep traktuje je jak towar do wysyłki),
- płatnościach, które zostawiają zamówienie w „W trakcie realizacji”,
- ręcznej sprzedaży / przelewie, gdy sam zmieniasz status.
Czego ta opcja NIE robi. Nie daje plików przy statusach Oczekujące na płatność ani Wstrzymane. „Po płatności” znaczy: po tym, jak WooCommerce uzna zamówienie za opłacone. Zamówienie czekające na przelew nadal nie odblokuje plików — zobaczysz to w części 3. kursu.
3. Otwórz w przeglądarce
Checkbox: „Otwieraj pliki do pobrania w przeglądarce, zamiast zapisywania ich na urządzeniu”. Na zrzucie: odznaczony.
Gdy odznaczony (domyślnie). WooCommerce wysyła nagłówek Content-Disposition: attachment. Przeglądarka pokazuje okno „Zapisz jako…” albo od razu zrzuca plik do folderu Pobrane. To właściwe zachowanie dla ZIP-ów, paczek kursów i większości e-booków, które klient ma zachować.
Gdy zaznaczony. Nagłówek zmienia się na Content-Disposition: inline. Przeglądarka próbuje otworzyć plik w karcie: PDF w wbudowanej przeglądarce PDF, obrazek na stronie, MP3 w odtwarzaczu. Klient nadal może zapisać plik ręcznie (prawy przycisk, ikona dyskietki w PDF), ale pierwszy odruch to podgląd, nie pobranie.
Szara adnotacja: nie dotyczy przekierowań. Przy metodzie „Tylko przekierowanie” to WooCommerce nie kontroluje nagłówków — decyduje serwer, na który poszło przekierowanie.
Uwaga przy ZIP i nietypowych typach MIME. Przeglądarka i tak zwykle pobierze ZIP, bo nie umie go „wyświetlić”. Opcja ma największy sens przy PDF, JPG, PNG, MP3, MP4.
4. Nazwa pliku
Checkbox: „Ze względów bezpieczeństwa dodaj do nazwy pliku unikalny ciąg znaków”. Na zrzucie: zaznaczony (i tak zostaw).
Co robi. Gdy wgrywasz plik przez WooCommerce, do nazwy dopisywany jest krótki, losowy ogon. Zamiast kurs-wiosenny.zip na dysku ląduje np. 2026-05-30-14-55-17-ynqxpc.zip. Dokładnie taki wzorzec zobaczysz w części 2., po wgraniu paczki.
Po co. Gdyby ktoś odgadywał adresy w stylu /wp-content/uploads/woocommerce_uploads/kurs.zip, trafiałby w pustkę. Losowy ciąg zamienia zgadywanie w loterię.
Szary opis na stronie mówi trzy rzeczy, które warto zapamiętać:
- opcja jest zbędna, jeśli katalog z plikami jest już twardo chroniony (brak publicznego dostępu HTTP) — ale dodatkowa warstwa nic nie psuje;
- włączenie albo wyłączenie nie zmienia plików, które już leżą na serwerze; działa tylko przy kolejnych wgraniach;
- to zabezpieczenie nazwy, nie substytut metody pobierania. Przy „Tylko przekierowanie” unikalna nazwa utrudnia zgadywanie, ale nie chroni przed skopiowaniem gotowego URL-a.
5. Zliczanie pobrań częściowych
Checkbox: „Zliczaj pobrane pliki, nawet jeśli pobierana jest tylko część pliku”. Na zrzucie: zaznaczony.
Problem, który to rozwiązuje. Nowoczesne przeglądarki i menedżery pobierania używają żądań zakresowych (HTTP Range): pobierają plik kawałkami, wznawiają po zerwaniu, otwierają kilka połączeń naraz. Każde takie żądanie WooCommerce mógłby policzyć jako osobne pobranie. Przy limicie np. 3 pobrań klient „spaliłby” limit na jednym ZIP-ie.
Dlatego WooCommerce ma okno czasowe (domyślnie 30 minut): powtórne żądania tego samego pliku w tym oknie nie są liczone drugi raz. Szary opis na stronie mówi o tym wprost.
Gdy pole jest zaznaczone. Nawet niepełne pobranie (klient przerwał, sieć padła, pobrał 10% pliku) schodzi z limitu — ale w ramach tych 30 minut kolejne próby tego samego pliku są traktowane jako kontynuacja, nie jako nowe pobranie.
Gdy odznaczysz. WooCommerce jest łagodniejszy wobec urywanych transferów, ale sprytny klient / skrypt może „skubać” plik wieloma małymi żądaniami i obchodzić limit.
Rekomendacja. Zostaw zaznaczone, zwłaszcza jeśli w produkcie ustawisz twardy limit pobrań. Przy limicie „nieograniczone” (jak w naszym przykładzie) opcja i tak nic nie boli, a raporty pobrań są bliższe rzeczywistości.
Zapis ustawień i sąsiednia karta
Po ustawieniu opcji zjedź na dół strony i kliknij Zapisz zmiany. Bez tego nic z powyższego nie zacznie obowiązywać.
Obok, w karcie Dozwolone katalogi pobierania, WooCommerce trzyma białą listę ścieżek. Jeśli w produkcie wkleisz URL spoza tej listy, sklep może odmówić serwowania pliku. Przy jednym administratorze i plikach wgrywanych standardowo lista zwykle już zawiera właściwe katalogi. Warto tam zajrzeć, gdy po wgraniu pliku klient dostaje błąd zamiast pobrania.
Część 2. Pliki do pobrania w karcie produktu
Ustawienia sklepu mówią jak oddawać pliki. Teraz wskazujesz który plik należy do którego produktu, jak ma się nazywać przycisk u klienta oraz czy ma limit i datę ważności.
Krok 5. Lista produktów
W lewym menu WordPressa kliknij Produkty, a potem Wszystkie produkty.
Krok 6. Otwórz produkt do edycji
Na liście znajdź produkt, który ma dostać plik. W przykładzie jest to E-book: Wiosenny warsztat w ogrodzie – przewodnik dla nauczycieli (identyfikator 32). Najedź na tytuł — pojawią się skróty: Edytuj, Szybka edycja, Przenieś do kosza, Podgląd, Powiel. Kliknij tytuł albo Edytuj.
Krok 7. Oznacz produkt jako wirtualny i do pobrania
Zjedź do ramki Dane produktu. Nad zakładkami (Ogólne, Magazyn, Wysyłka…) stoją dwa checkboxy:
- Wirtualny — produkt nie jest paczką fizyczną. WooCommerce wyłącza wymiary, wagę i metody wysyłki. Po opłaceniu zamówienie z samym takim towarem zwykle samo przechodzi na Zrealizowane.
- Do pobrania — po zakupie klient ma dostać plik. Dopiero to pole odsłania formularz plików, limitu i ważności.
Na zrzucie Wirtualny jest już zaznaczony, a kursor czeka nad Do pobrania. Dymka podpowiada: „Produkty do pobrania dają dostęp do pliku po zakupie.” Zaznacz Do pobrania.
Kombinacje, które musisz rozumieć:
- Wirtualny + Do pobrania — czysty produkt cyfrowy (e-book, ZIP z kursem). Brak wysyłki, po płatności zamówienie się zamyka, pliki startują. To nasz scenariusz.
- Tylko Do pobrania (bez Wirtualny) — towar fizyczny z dodatkiem cyfrowym. Zostaje wysyłka. Zamówienie idzie do „W trakcie realizacji”. Pliki pojawią się od razu tylko wtedy, gdy w części 1. zostawiłeś zaznaczone Przyznaj dostęp… po płatności.
- Tylko Wirtualny — usługa bez pliku (konsultacja, bilet). Formularza plików nie zobaczysz.
Krok 8. Formularz plików, limitu i ważności
Po zaznaczeniu Do pobrania w zakładce ogólnej danych produktu pojawiają się trzy bloki.
Pliki do pobrania
Tabela z kolumnami Nazwa i Adres URL pliku. Na razie pusta. Przycisk Dodaj plik dokłada kolejny wiersz — jeden produkt może mieć wiele plików (np. PDF + materiały dodatkowe + instrukcja). Każdy wiersz to osobny przycisk u klienta.
- Nazwa — etykieta, którą zobaczy klient na przycisku. Nie musi być nazwą pliku z dysku. W dalszej części kursu przycisk nazywa się KURS A, bo taką nazwę wpisano w tym polu.
- Adres URL pliku — faktyczna lokalizacja. Możesz wkleić gotowy URL albo wybrać plik z biblioteki / wgrać nowy (kolejne kroki).
Limit pobrań
Pole liczbowe, placeholdery: Nieograniczone. Pod spodem: „Pozostaw puste pole, aby umożliwić nieograniczoną liczbę pobrań.”
Puste = klient może klikać bez końca (nadal w ramach metody z części 1. i ewentualnego wymogu logowania). Liczba, np. 3, oznacza trzy udane zejścia z limitu. Dzięki opcji zliczania pobrań częściowych urwane transfery w oknie 30 minut nie spalą limitu kilkukrotnie.
W przykładzie zostawiamy puste — na koncie klienta zobaczysz później symbol nieskończoności (∞).
Ważność wygaśnięcia pobierania
Pole liczbowe, placeholdery: Nigdy. Pod spodem: „Wpisz liczbę dni po których pobieranie wygaśnie albo pozostaw puste.”
Liczy się od daty, w której klient dostał uprawnienie (zwykle data płatności / statusu, który odblokowuje pliki), nie od daty publikacji produktu. 7 = tydzień na pobranie. Puste = bez daty końcowej. W przykładzie puste — u klienta pojawi się słowo Nigdy.
Krok 9. Dodaj wiersz i kliknij „Wybierz plik”
Kliknij Dodaj plik. W wierszu, po prawej stronie pól, jest przycisk Wybierz plik. Obok — kółko z krzyżykiem, którym usuniesz cały wiersz, jeśli dodałeś go przez pomyłkę. Kliknij Wybierz plik.
Otworzy się okno biblioteki mediów WordPressa. To ten sam mechanizm, którym wgrywasz zdjęcia do wpisów — z jedną praktyczną różnicą opisaną niżej, przy bezpieczeństwie.
Krok 10. Wgraj paczkę ZIP
Najwygodniej: przeciągnij plik z pulpitu na okno przeglądarki. Cały ekran robi się niebieski, na środku biały napis „Upuść tutaj pliki, aby je przesłać”. Na zrzucie widać przeciąganą ikonę archiwum ZIP.
Możesz też użyć przycisku wyboru pliku z dysku. WooCommerce / WordPress przyjmie te same rozszerzenia, które WordPress w ogóle pozwala wgrywać. Limitu rozmiaru WooCommerce nie ustawia — obowiązuje limit PHP / hostingu (upload_max_filesize, post_max_size). Paczka z przykładu waży 24 MB; jeśli Twój hosting ma limit 8 MB, wgranie się nie uda, dopóki nie podniesiesz limitu.
Krok 11. Zaznacz wgrany plik
Po wgraniu plik pojawia się w siatce jako ikona archiwum (dokument z suwakiem). Na zrzucie nazwa to 2026-05-30-14-55-17-ynqxpc.zip: znacznik czasu plus losowy ogon. To właśnie efekt opcji „dodaj do nazwy pliku unikalny ciąg znaków” z części 1.
Kliknij miniaturę. Niebieska ramka i ptaszek w prawym górnym rogu oznaczają zaznaczenie.
Krok 12. Sprawdź szczegóły załącznika
Po prawej stronie okna mediów (albo w panelu szczegółów) WordPress pokazuje metadane pliku. Na zrzucie:
- nazwa na dysku: archiwum ZIP z unikalnym ogonem,
- data przesłania: 2026-08-13,
- rozmiar: 24 MB,
- link Usuń — kasuje plik z serwera, nie tylko z produktu,
- Tytuł — nazwa w bibliotece (tu data i godzina); to nie jest etykieta przycisku u klienta,
- Podpis i Opis — opcjonalne, WooCommerce ich nie pokazuje przy pobieraniu,
- Adres URL pliku — pełny, nieedytowalny URL; na zrzucie zaczyna się od
http://localhost/akacja_..., - przycisk Skopiuj adres URL do schowka — przydatny, gdy wklejasz URL ręcznie zamiast korzystać z „Wstaw adres URL pliku”.
Uwaga o bezpieczeństwie. Biblioteka mediów WordPressa jest z zasady publiczna: zdjęcia wpisów muszą być dostępne pod bezpośrednim URL-em. Plik wgrany tędy może dać się pobrać każdemu, kto zgadnie lub przechwyci adres — nawet przy metodzie „Wymuszaj pobieranie”, jeśli ktoś wejdzie na goły URL z biblioteki, a nie na odnośnik WooCommerce.
Twardziej: w karcie produktu, po kliknięciu Wybierz plik, wgraj plik tak, by trafił do katalogu wp-content/uploads/woocommerce_uploads/ (WooCommerce chroni go plikiem .htaccess), albo trzymaj pliki poza webrootem i serwuj metodą X-Sendfile. Do ćwiczenia i małych sklepów ścieżka z biblioteki działa; na produkcji z płatnymi materiałami warto świadomie wybrać katalog chroniony i białą listę z karty Dozwolone katalogi pobierania.
Krok 13. Wstaw adres URL do produktu
Na dole okna mediów kliknij niebieski przycisk Wstaw adres URL pliku. WooCommerce przepisze URL zaznaczonego pliku do kolumny Adres URL pliku w wierszu produktu.
Potem uzupełnij kolumnę Nazwa. To, co tu wpiszesz, klient zobaczy na pomarańczowym przycisku. W naszym przykładzie nazwa to KURS A — krótka, czytelna etykieta, inna niż techniczna nazwa ZIP-a na dysku.
Jeśli produkt ma kilka plików, powtórz: Dodaj plik → Wybierz plik → wgraj / zaznacz → Wstaw adres URL → wpisz nazwę.
Krok 14. Zapisz produkt
W prawej kolumnie edycji (ramka publikacji) kliknij Aktualizuj. Dopiero wtedy wiersz pliku, nazwa przycisku, limit i ważność lądują w bazie. Jeśli zamkniesz kartę bez aktualizacji, klient nadal nie będzie miał czego pobierać.
Od tej chwili nowe zamówienia na ten produkt będą dostawać uprawnienie do tego pliku. Zamówienia złożone wcześniej — nie. Zmiana URL-a lub nazwy w istniejącym wierszu aktualizuje link u starych klientów (limit i data ważności zostają). Nowy, dodatkowy wiersz pliku dotyczy tylko kolejnych zakupów.
Część 3. Przyznanie dostępu w zamówieniu
Sam plik w produkcie nic nie daje, dopóki WooCommerce nie wystawi klientowi uprawnienia do pobrania (download permission) przy konkretnym zamówieniu. Przy płatności online i produkcie wirtualnym + do pobrania dzieje się to samo. Przy przelewie, płatności wstrzymanej albo ręcznym zamówieniu musisz to zrobić z poziomu zamówienia — jak w tym przykładzie.
Krok 15. Lista zamówień
W lewym menu: WooCommerce → Zamówienia.
Krok 16. Otwórz zamówienie klienta
Na liście widać zamówienie #96 Paweł Nosko, złożone 12 minut temu. Status: pomarańczowa etykieta Wstrzymane (oczekujące na płatność).
Ten status jest kluczowy. WooCommerce uznał, że pieniądze jeszcze nie wpłynęły (typowe dla przelewu, czeku, ręcznego zamówienia albo bramki, która nie potwierdziła wpłaty). Przy statusie wstrzymanym / oczekującym plik nie zostanie odblokowany, nawet jeśli w części 1. zaznaczyłeś „Przyznaj dostęp po płatności”. Tamta opcja reaguje na statusy po płatności: W trakcie realizacji i Zrealizowane.
Kliknij numer zamówienia albo nazwisko, żeby wejść w edycję. Ikonka oka obok otwiera tylko szybki podgląd — do zmiany statusu potrzebujesz pełnej edycji.
Krok 17. Zmień status na Zrealizowane
W ramce Ogólne masz datę utworzenia (tu: 2026-08-13, godz. 07:04) oraz listę Status. Rozwiń ją. Na zrzucie widać m.in.:
- Oczekujące na płatność — zamówienie przyjęte, brak wpłaty; plików nie ma.
- W trakcie realizacji — opłacone, w toku. Przy zaznaczonej opcji „po płatności” pliki już tu startują.
- Wstrzymane (oczekujące na płatność) — obecny stan #96; plików nie ma.
- Zrealizowane — zamówienie zamknięte; pliki są zawsze, o ile produkt był do pobrania i wiersz pliku istniał w momencie przyznania uprawnień.
- Anulowano / Zwrócone — dostęp do pobrań jest odbierany.
Najedź na Zrealizowane i kliknij. To najpewniejszy sposób ręcznego odblokowania e-booka: sklep traktuje zamówienie jako zakończone i wystawia (lub odświeża) uprawnienia do plików.
Kiedy wybrać „W trakcie realizacji” zamiast „Zrealizowane”. Gdy w zamówieniu jest też towar fizyczny i paczka jeszcze nie wyszła. Przy zaznaczonym „Przyznaj dostęp… po płatności” PDF poleci, a Ty dalej realizujesz wysyłkę. W czysto cyfrowym #96 logiczne jest od razu Zrealizowane.
W edycji zamówienia, niżej, jest też ramka Uprawnienia do pobieranych produktów (Downloadable product permissions). Tam zobaczysz plik, liczbę pozostałych pobrań i datę wygaśnięcia. Z tego miejsca możesz ręcznie dodać uprawnienie, odebrać je albo zresetować licznik — przydatne, gdy klient wyczerpał limit albo zmieniłeś plik w produkcie i chcesz dograć dostęp do starego zamówienia.
W ramce Akcje: Zamówienie lista „Wybierz akcję…” pozwala m.in. ponownie wysłać e-mail z zamówieniem (a w nim odnośnik do pliku) oraz — w wielu instalacjach — ponownie wygenerować uprawnienia do pobierania, gdy status jest już prawidłowy, a przycisku u klienta nadal nie ma.
Krok 18. Zapisz zamówienie
Sama zmiana na liście nic nie robi, dopóki nie klikniesz Aktualizuj w ramce Akcje: Zamówienie. Po lewej jest czerwony link Przenieś do kosza — nie myl go z aktualizacją.
Po zapisie:
- status #96 zmienia się na Zrealizowane,
- WooCommerce zapisuje uprawnienie do pliku z produktu (ten wiersz z nazwą KURS A),
- klient dostaje e-mail „Zrealizowane zamówienie” z odnośnikiem (o ile ten e-mail jest włączony w WooCommerce → Ustawienia → E-maile),
- plik pojawia się też w panelu konta, w zakładce Pobrania — to część 4.
Jeśli zmieniasz status z wstrzymanego na zrealizowane przy płatności, której sklep nie zarejestrował, pamiętaj o stronie księgowej: WooCommerce uzna zamówienie za opłacone. Przy przelewie rób to dopiero po faktycznym wpływie na konto.
Część 4. Pobieranie plików z konta klienta
Klient nie wchodzi do wp-admin. Ma sklepową stronę Moje konto (shortcode [woocommerce_my_account] / blok WooCommerce). Tam, obok zamówień i adresów, jest osobna pozycja na pliki.
Krok 19. Zakładka Pobrania
Ścieżka w okruszkach: Sklep / Moje konto / Pobrania. W menu konta aktywna jest pozycja Pobrania (ikona strzałki do tacki). Pozostałe pozycje to Kokpit, Zamówienia, Adresy, Szczegóły konta, Wyloguj się.
Główny widok to tabela:
- Produkt — „E-book: Wiosenny warsztat w ogrodzie – przewodnik dla nauczycieli”. To nazwa produktu ze sklepu, nie nazwa pliku.
- Pozostało pobrań — ∞, bo w produkcie limit zostawiliśmy pusty (Nieograniczone). Przy limicie 3 zobaczyłby tu 3, potem 2, 1, 0. Przy zerze przycisk znika albo przestaje działać.
- Wygasa — Nigdy, bo pole ważności też było puste. Przy
7dniach pojawiłaby się konkretna data. - Pobierz — przycisk z etykietą z kolumny Nazwa w produkcie, tu: KURS A.
Jeśli tabela jest pusta, zwykle znaczy to, że:
- zamówienie nadal jest wstrzymane / oczekujące,
- produkt nie miał zaznaczonego Do pobrania albo nie miał wiersza pliku w chwili przyznawania uprawnień,
- klient jest zalogowany na inne konto (inny e-mail) niż to z zamówienia,
- w ustawieniach sklepu wymagane jest logowanie, a sesja wygasła.
Klient może też pobrać plik z e-maila oraz — tuż po opłaceniu — ze strony „Zamówienie otrzymane”, o ile uprawnienie już wtedy istnieje.
Krok 20. Kliknięcie przycisku KURS A
Ostatni krok po stronie klienta: kolumna POBIERZ, pomarańczowy przycisk KURS A.
Po kliknięciu dzieje się to, co ustawiłeś w części 1.:
- Przeglądarka wchodzi na odnośnik WooCommerce (z identyfikatorem pliku, zamówienia, e-maila i klucza), nie na goły URL ZIP-a.
- Sklep sprawdza: czy to ten klient / ten e-mail, czy zamówienie daje prawo, czy limit i data jeszcze pozwalają, czy (gdy włączone) użytkownik jest zalogowany.
- Przy metodzie Wymuszaj pobieranie PHP oddaje plik i przeglądarka go zapisuje (checkbox „otwórz w przeglądarce” był odznaczony, a ZIP i tak nie otworzy się jako strona).
- Pobranie trafia do statystyk. Przy nieograniczonym limicie ∞ zostaje ∞. Przy limicie liczbowym licznik spada, z uwzględnieniem okna 30 minut i zliczania pobrań częściowych.
Jeśli zamiast pliku klient widzi błąd, wróć kolejno: metoda pobierania i allow_url_fopen / X-Sendfile, dozwolone katalogi, czy plik nadal leży pod zapisanym URL-em, status zamówienia, uprawnienia w ramce zamówienia.
Podsumowanie
Cały łańcuch, który właśnie przeszedłeś:
- Sklep — WooCommerce → Ustawienia → Produkty → Produkty do pobrania. Metoda: wymuszaj pobieranie (albo X-Sendfile na przygotowanym serwerze). Nie używaj samego przekierowania do płatnych plików. Zostaw unikalny ogon w nazwie i zliczanie pobrań częściowych. „Po płatności” odblokowuje pliki już przy statusie „W trakcie realizacji”, ale nie przy „Wstrzymane”.
- Produkt — Wirtualny + Do pobrania, wiersz pliku z czytelną nazwą przycisku i URL-em, limit i ważność według polityki sklepu, na końcu Aktualizuj.
- Zamówienie — dopóki status to oczekujące / wstrzymane, pliku nie ma. Zrealizowane (albo W trakcie realizacji przy zaznaczonym dostępie po płatności) + Aktualizuj wystawia uprawnienie.
- Konto klienta — Moje konto → Pobrania → przycisk z Twoją etykietą (KURS A). Limit ∞ i Wygasa: Nigdy odpowiadają pustym polom w produkcie.
Gdy któryś etap pominiesz, łańcuch się urywa: plik w produkcie bez uprawnienia w zamówieniu jest niewidoczny, uprawnienie bez pliku daje martwy przycisk, a najbezpieczniejsza metoda pobierania nie pomoże, jeśli zamówienie wisi na „oczekujące na płatność”.
Sklepy internetowe Woocommerce
Sklepy internetowe Opencart
Sklepy internetowe Prestashop
Sklepy internetowe Magento
Strony internetowe Joomla!
Strony Internetowe Wordpress


