
🔧 Jak naprawić błąd «Publikacja przeterminowana» w WordPress: 3 działające sposoby
Ustawia Pani budzik na ósmą rano, w poniedziałek ma się ukazać ważny wpis. Przygotowała go Pani w weekend, ustawiła harmonogram w panelu administracyjnym WordPress i poszła spać spokojnie. Wtorek, otwiera Pani stronę, nic. W panelu administracyjnym przy tytule widnieje komunikat: „Publikacja przeterminowana".
Brzmi znajomo? Tylko w ciągu ostatniego roku na rosyjskojęzycznych forach wsparcia WordPressa problem ten był omawiany ponad trzysta razy. I nie chodzi tu o Pani panel administracyjny, hosting ani wtyczki, chodzi o cechę architektoniczną samego WordPressa.
Poniżej trzy sposoby, by rozwiązać tę kwestię raz na zawsze, od najszybszego do najbardziej niezawodnego. Bez cronowych zaklęć, bez ślepego edytowania pliku wp-config.php i bez postawy „będę po prostu publikować ręcznie".
💡 Szybki przegląd:
- Zainstalować Missed Schedule Post Publisher, automatyczna publikacja przeterminowanych wpisów, dwie minuty na instalację
- Zastąpić WP-Cron cronem serwerowym, radykalne rozwiązanie, niezależne od ruchu na stronie
- Zainstalować WP Crontrol do ręcznej kontroli, pokazuje wszystkie zdarzenia cron, umożliwia ręczne uruchomienie dowolnego z nich
Dlaczego WordPress pomija zaplanowane publikacje
WordPress nie używa prawdziwego crona systemowego. Zamiast tego opiera się na mechanizmie WP-Cron, pseudo-cronie, który uruchamia się nie według timera serwera, lecz w momencie wejścia odwiedzającego na stronę.
Działa to tak. Gdy ustawia Pani publikację na 09:00, WordPress zapisuje zadanie w bazie danych. Może je jednak wykonać tylko wtedy, gdy około 09:00 ktoś wejdzie na stronę. Wszedł odwiedzający, WordPress przejrzał listę zadań i opublikował wpis. Nie wszedł, zadanie wisi martwym ciężarem, a Pani widzi komunikat „Publikacja przeterminowana".
W przypadku stron z ruchem od 500-1000 odwiedzających na dobę WP-Cron działa akceptowalnie: prawie na pewno ktoś kliknie w odpowiednim momencie. Jeśli jednak ma Pani młodego bloga, niszowy projekt lub publikuje Pani wpisy w nocy (w swojej strefie czasowej), WP-Cron regularnie zawodzi. Dochodzą do tego wtyczki buforujące: WP Rocket, W3 Total Cache lub Cloudflare mogą serwować zbuforowaną stronę, w ogóle nie uruchamiając WordPressa, i zadania cron nie są wykonywane godzinami.
Właśnie dlatego błąd „Publikacja przeterminowana" jest systemowy, a nie przypadkowy. I nie leczy się go ręcznym przeplanowywaniem wpisu, tylko jednym z trzech poniższych podejść.
Trzy sposoby pokrywają różne scenariusze. Pierwszy, instalacja lekkiej wtyczki-automatu, rozwiązuje problem u zdecydowanej większości użytkowników w dwie minuty. Drugi, przejście na cron serwerowy, daje gwarancję infrastrukturalną niezależnie od ruchu. Trzeci, ręczny panel kontrolny, przyda się tym, którzy chcą widzieć każde zadanie cron z nazwy i uruchamiać je ręcznie. Może Pani zacząć od pierwszego, a później dodać trzeci dla pełnego spokoju.

Sposób 1: wtyczka Missed Schedule Post Publisher, prosta i niezawodna
Najszybszy sposób na rozwiązanie problemu to zainstalowanie specjalistycznej wtyczki. Historycznie używano do tego WP Missed Schedule, ale została ona usunięta z katalogu WordPress.org już w 2017 roku, a wersja z GitHuba zawierała backdoor. Proszę nawet nie myśleć o jej instalowaniu.
Aktualny zamiennik to Missed Schedule Post Publisher. Wtyczka o jednym jedynym przeznaczeniu: sprawdza, czy nie zawisła zaplanowana publikacja, i wypuszcza ją w momencie wykrycia.
Czym różni się od martwego poprzednika:
Działa przez WP-Cron i jednocześnie przez wejścia odwiedzających, jeśli WP-Cron jest wyłączony przez hosting, wtyczka przełącza się automatycznie
Konfigurowalny interwał sprawdzania: 5, 10, 15, 20, 30 lub 60 minut
Zerowy wpływ na wydajność, jedno lekkie zapytanie do bazy danych
Kompatybilna z WP Rocket, W3 Total Cache i Cloudflare
Nie tworzy „lejka" zbędnych zdarzeń cron, sprawdza tylko pominięte publikacje
Instalacja standardowa: Plugins → Add New → wyszukaj „Missed Schedule Post Publisher" → Install → Activate. Po aktywacji proszę wejść w Settings → Missed Schedule Post Publisher i wybrać interwał sprawdzania. Dla większości stron optymalne jest 10-15 minut.
Wtyczka nie wymaga ręcznej kontroli. Zainstalowana, skonfigurowany interwał i może Pani sprawdzić wynik po dobie: proszę wejść w Posts → All Posts i upewnić się, że znacznik „Publikacja przeterminowana" zniknął. Dalej działa sama, cicho i niezawodnie.
Dla porównania: stary WP Missed Schedule (zamknięty w katalogu WordPress.org od 2017 roku, wersja z GitHuba zawierała backdoor) wyglądał w panelu administracyjnym tak. Jeśli przypadkiem widzi Pani tę wtyczkę na swojej liście zainstalowanych, proszę ją natychmiast usunąć i zastąpić Missed Schedule Post Publisher.

Sposób 2: cron serwerowy zamiast WP-Cron, radykalne rozwiązanie
Sposób głębszy technicznie, ale dający stuprocentową niezawodność: wyłącza Pani WP-Cron i podpina wywołanie wp-cron.php pod systemowy cron serwera.
Cron systemowy uruchamia się zgodnie z harmonogramem systemu operacyjnego, niezależnie od ruchu na stronie. Ustawiony interwał 5 minut, zadanie wykona się dokładnie po 5 minutach, nawet jeśli na stronie jest zero odwiedzających.
Co należy zrobić:
- Proszę otworzyć
wp-config.phpi dodać wiersz przed/* That's all, stop editing! */:
1 define('DISABLE_WP_CRON', true);
To zabrania WordPressowi uruchamiania zadań cron przy wejściu odwiedzających. Same zadania nigdzie nie znikają, pozostają w bazie i czekają na wywołanie z zewnątrz.
- W panelu hostingu proszę znaleźć sekcję „Zadania cron" (cPanel → Cron Jobs, ISPmanager → Planer lub podobną). Proszę utworzyć zadanie z interwałem 5-10 minut i komendą:
1 wget -q -O - https://ваш-сайт.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
Jeśli serwer obsługuje PHP CLI, alternatywny wariant, szybszy i bez obciążania serwera WWW:
1 php /home/username/public_html/wp-cron.php
- Proszę zapisać zadanie. Po 10 minutach proszę sprawdzić logi crona, jeśli nie ma błędów, system działa.
Bonus: wyłączenie WP-Cron przez DISABLE_WP_CRON usuwa pasożytnicze opóźnienie podczas ładowania stron dla odwiedzających. WordPress nie wywołuje już zadań cron podczas zwykłego przeglądania, strony otwierają się nieco szybciej.
Ten sposób ma jedną wadę: dostęp do ustawień crona nie jest dostępny na wszystkich hostingach. Tani hosting współdzielony czasami blokuje tworzenie zadań cron. W takim przypadku proszę wrócić do sposobu 1, Missed Schedule Post Publisher został zaprojektowany właśnie pod takie ograniczenia i działa bez crona systemowego.
Sposób 3: ręczne sprawdzanie przez WP Crontrol, pełna kontrola
Trzeci sposób, dla tych, którzy chcą widzieć wszystko, co dzieje się pod maską WordPressa. WP Crontrol to menedżer zdarzeń cron bezpośrednio w panelu administracyjnym. Nie publikuje wpisów sam, ale pokazuje, jakie zadania są zaplanowane, kiedy miały się uruchomić i co poszło nie tak.
Co daje WP Crontrol:
Pełną listę wszystkich zdarzeń cron z hakiem, argumentami i czasem następnego uruchomienia
Możliwość ręcznego uruchomienia dowolnego zdarzenia, natychmiast, jednym kliknięciem
Edycję i usuwanie zdarzeń cron
Dodawanie nowych zdarzeń i niestandardowych harmonogramów
Ostrzeżenie, jeśli system cron nie działa (serwer nie może połączyć się sam ze sobą)
Po instalacji proszę wejść w Tools → Cron Events. Zobaczy Pani tabelę wszystkich zadań. Jeśli publikacja „zawisła", proszę znaleźć zdarzenie z hakiem publish_future_post, kliknąć „Run Now", a wpis trafi na stronę w sekundę.
WP Crontrol jest szczególnie przydatny do debugowania: widzi Pani, czy jakaś wtyczka nie utworzyła setki zbędnych zdarzeń cron (zdarza się), czy kolejka zadań nie jest zapchana, czy nie ma konfliktu między wtyczkami. Kolumna „Next Run" pokazuje, kiedy zdarzenie ma się uruchomić następnym razem, jeśli data jest w przeszłości, zadanie zawisło. Kolumna „Recurrence" podpowie, jak często zdarzenie się powtarza, niestandardowo częste powtórzenia (co minutę) prawie zawsze wskazują na problematyczną wtyczkę.
Sam WP Crontrol nie zapobiega jednak błędowi „Pominiętego harmonogramu", pomaga jedynie zdiagnozować i ręcznie usunąć skutki. Po ręcznym uruchomieniu zawieszonej publikacji wpis ukazuje się natychmiast, jednak następnym razem sytuacja się powtórzy, jeśli nie usunie się przyczyny na poziomie sposobu 1 lub 2.

Najlepsze połączenie: sposób 1 (wtyczka-automat) + sposób 3 (WP Crontrol do kontroli). Automat publikuje pominięte, a WP Crontrol pozwala jednym rzutem oka upewnić się, że kolejka zadań cron jest czysta i wszystko działa prawidłowo.
⁉️🤔 Częste pytania
Dlaczego WordPress nie używa normalnego crona, jak wszystkie normalne systemy?
Twórcy WordPressa świadomie wybrali model pseudo-crona, ponieważ nie wymaga on konfiguracji po stronie serwera. Użytkownik instaluje WordPressa na dowolnym hostingu i planowanie publikacji działa „od razu po wyjęciu z pudełka", bez SSH i edycji plików konfiguracyjnych. Ceną tej wygody jest zawodność na stronach o niskim ruchu. WP-Cron uruchamia się przy każdym żądaniu do strony i jeśli w odpowiednim momencie nie ma żądań, zadanie nie jest wykonywane. To kompromis architektoniczny i w przypadku publikacji krytycznych czasowo jest on niewystarczający.
Który sposób wybrać, jeśli nie znam się na serwerach?
Missed Schedule Post Publisher (sposób 1). Instalacja, dwie minuty przez panel administracyjny, konfiguracja, wybór interwału z listy rozwijanej. Żadnego kodu, żadnego SSH, żadnych poprawek w
wp-config.php. Wtyczka sama określa, czy WP-Cron jest włączony na serwerze i dostosowuje się.
Czy błąd może być związany ze strefą czasową WordPressa?
Tak, i proszę to sprawdzić w pierwszej kolejności. Proszę wejść w Settings → General → Timezone i upewnić się, że wybrana jest prawidłowa miejska strefa czasowa, a nie ręczne przesunięcie UTC. Przesunięcie UTC+X nie uwzględnia czasu letniego/zimowego, raz na pół roku harmonogram „zjeżdża" o godzinę i wpisy publikują się nie wtedy, kiedy Pani oczekiwała.
Czy buforowanie wpływa na pomijanie publikacji?
Bezpośrednio, tak. Wtyczki buforujące (WP Rocket, W3 Total Cache, WP Super Cache) i CDN (Cloudflare) mogą serwować odwiedzającemu gotową stronę HTML, w ogóle nie uruchamiając rdzenia PHP WordPressa. Jeśli WP-Cron nie jest wywoływany, zadania nie są wykonywane. Missed Schedule Post Publisher (sposób 1) omija ten problem, działając zarówno przez cron, jak i przez wejścia odwiedzających z pominięciem bufora. Cron serwerowy (sposób 2) nie zależy od bufora w ogóle.
Co robić, jeśli hosting zablokował możliwość tworzenia zadań cron?
Proszę użyć sposobu 1, Missed Schedule Post Publisher. Został zaprojektowany właśnie na takie sytuacje: działa przez wbudowany WP-Cron, a jeśli jest on wyłączony, automatycznie przełącza się na sprawdzanie przy wejściach odwiedzających. Nie traci Pani funkcjonalności, po prostu sprawdzanie odbywa się nieco rzadziej (przy okazji wizyty, a nie ściśle według timera).
Co zainstalować od razu dzisiaj
Problemu „Publikacja przeterminowana" nie leczy się ręcznym przeplanowywaniem, to jak zamalowywanie pęknięcia na rurze. Trzeba albo zainstalować wtyczkę-automat (dwie minuty i zapomnieć), albo przejść na cron serwerowy (trochę dłużej i zapomnieć na zawsze).
Jeśli ma Pani typowego bloga lub stronę firmową na przeciętnym hostingu, proszę zacząć od Missed Schedule Post Publisher. Interwał 10 minut, pięć kliknięć w panelu administracyjnym i sprawa załatwiona. Jeśli chce Pani gwarancji na poziomie infrastruktury, proszę wdrożyć cron systemowy. Proszę dodać WP Crontrol do kontroli i o pominiętych publikacjach będzie można wspominać tylko w rozmowach o tym, „jak to było kiedyś".
Po dobie od instalacji proszę wejść do panelu administracyjnego i sprawdzić najbliższy zaplanowany wpis. Jeśli ukazał się na czas, system działa. Jeśli nie, proszę otworzyć WP Crontrol i sprawdzić, czy nie wisi zadanie publish_future_post bez wykonania, wskaże to na głębszy problem z cronem na serwerze, który rozwiąże sposób 2.



