Przejdź do treści

WordPress

Zaplanowane wpisy nie publikują się na czas jak ustawić WP Cron

Zaplanowany wpis ma się pojawić o siódmej rano, a Ty o dziewiątej nadal widzisz status Zaplanowano albo Komunikat o pominiętym terminie. To nie tylko irytacja. Jeśli publikacja uruchamia newsletter, kampanię czy wpisy w social mediach, każde opóźnienie rozsypuje plan dnia.

Najczęściej winowajcą jest WP Cron, czyli wewnętrzny harmonogram WordPressa. Da się go ustawić tak, aby nie blokował pracy, nawet gdy ruch na stronie jest mały albo hosting ogranicza połączenia zwrotne. Poniżej konkretne kroki i punkty kontrolne, które realnie pomagają.

Objawy i skutki opóźnień publikacji

Jeśli w kokpicie widzisz wpisy w statusie Zaplanowano po terminie albo pojawia się informacja o pominiętym terminie, to znak, że zadania zaplanowane nie są wywoływane o czasie. Zdarza się to częściej na stronach z małym ruchem lub na serwerach, które blokują żądania wewnętrzne.

Skutek to nie tylko brak wpisu na stronie. Przesuwają się automaty wysyłek, kolejki wtyczek do SEO, zadania sklepowe czy czyszczenie cache. Im bardziej strona polega na automatyzacji, tym dotkliwsze są opóźnienia.

Jak naprawdę działa WP Cron

WP Cron nie jest zegarem systemowym. To mechanizm, który sprawdza harmonogram zadań przy okazji wejść na stronę lub poprzez wywołanie wewnętrzne. Gdy nikt nie odwiedza witryny o siódmej rano, zadania czekają do najbliższego wywołania.

Drugim elementem są tak zwane pętle zwrotne. WordPress wysyła do siebie żądanie, żeby uruchomić kolejkę zadań w tle. Jeśli hosting to blokuje albo coś po drodze zatrzymuje żądania, cron nie ma jak wystartować.

Do tego dochodzą ograniczenia czasu wykonania i pamięci. Duża kolejka może zostać ucięta przez limity serwera, więc część zadań nie dobiega do końca i czeka na kolejne wywołanie.

Strefa czasowa i czas serwera

Najpierw sprawdź ustawienia czasu. W WordPressie w Ustawieniach Ogólnych ustaw miasto, a nie stałe przesunięcie od UTC. Dzięki temu zmiany czasu letniego i zimowego nie rozjadą publikacji. Jeśli czasy w logach i w kokpicie różnią się o wiele minut, zgłoś to do hostingu, bo zegar serwera może wymagać korekty.

Zdrowie witryny i pętle zwrotne

Wejdź do narzędzia Stan witryny. Jeśli pojawiają się ostrzeżenia o nieudanych pętlach zwrotnych lub problemach z REST API, zaplanowane zadania mogą nie startować. Najczęściej blokuje je ochrona serwera, uwierzytelnianie hasłem na całej stronie albo blokada po stronie wtyczki bezpieczeństwa.

Rozwiązaniem bywa dodanie wyjątków dla wewnętrznych połączeń, wyłączenie trybu budowy strony na hasło oraz tymczasowe luźniejsze reguły bezpieczeństwa dla adresów administracyjnych. Po zmianach uruchom ręcznie test w Stan witryny, aby zobaczyć czy komunikaty zniknęły.

Czy zadania są blokowane lub wyłączone

Zdarza się, że WP Cron jest świadomie wyłączony w pliku konfiguracyjnym, aby zastąpić go zadaniem systemowym. Sprawdź, czy w pliku konfiguracyjnym nie ma ustawienia, które wyłącza mechanizm crona. Jeśli tak, a jednocześnie nie masz ustawionego crona po stronie serwera, to właśnie źródło problemu.

Niektóre wtyczki kopii zapasowych lub optymalizacyjne potrafią tymczasowo blokować zadania, gdy wykrywają duże obciążenie. Warto zajrzeć w ich ustawienia i logi, czy nie pauzują harmonogramu.

Jeśli hosting domyślnie wyłącza wewnętrzny cron, poproś o instrukcję ustawienia zadania po stronie serwera. Dwa równoległe mechanizmy mogą się gryźć, więc zdecyduj się na jeden sposób zarządzania harmonogramem.

Prawdziwy cron na hostingu

Najstabilniejsza metoda to uruchamianie zadań przez harmonogram serwera. W panelu hostingu dodajesz zadanie cykliczne, które wywołuje plik odpowiedzialny za kolejkę zadań WordPressa w stałych odstępach czasu, zwykle co pięć lub dziesięć minut. Dzięki temu harmonogram działa niezależnie od ruchu na stronie.

Jeśli korzystasz z tej metody, wyłącz wewnętrzny mechanizm WordPressa, aby nie dublować wywołań. Podwójne uruchamianie może tworzyć wyścig zadań, a w skrajnych przypadkach konflikty w wtyczkach.

Po uruchomieniu zadania systemowego obserwuj, czy zaplanowane wpisy publikują się o czasie, a kolejka nie rośnie. Przy dużych serwisach sensowne bywa skrócenie interwału do trzech minut, aby szybciej odrabiać większe kolejki.

Cache i blokady po stronie wtyczek

Pełna pamięć podręczna stron zwykle nie przeszkadza w działaniu harmonogramu, ale blokady firewallu, tryb prywatny całej witryny lub strona powitalna dla gości potrafią zahamować połączenia wewnętrzne. Zadbaj, aby wewnętrzne wywołania WordPressa nie wymagały dodatkowego logowania.

Gdy korzystasz z ochrony aplikacyjnej lub serwera, dodaj wyjątki dla adresów administracyjnych i dla plików obsługujących zadania w tle. Po zmianach sprawdź ponownie komunikaty w narzędziu Stan witryny.

Podgląd i ręczne uruchamianie zadań

Do wglądu w kolejkę i ręcznego uruchamiania zadań przydaje się wtyczka WP Crontrol. Pozwala podejrzeć, które wydarzenia są zaplanowane, czy nie ma błędów i wywołać pojedyncze zadanie od ręki. To wygodne przy diagnozie, ale uruchamiaj ręcznie z rozwagą, aby nie wprowadzać dodatkowego chaosu.

Zobacz więcej darmowej wiedzy na ProjektWordPress.pl

Plan naprawczy krok po kroku

Zacznij od podstaw. Ustaw prawidłową strefę czasową w WordPressie, sprawdź komunikaty w narzędziu Stan witryny, przetestuj pętle zwrotne oraz REST API. Jeśli są błędy, usuń blokady logowania dla wewnętrznych połączeń i zaktualizuj wtyczki, które mogą je powodować.

Następnie upewnij się, czy wewnętrzny mechanizm crona nie jest wyłączony przypadkowo. Jeśli masz mały ruch lub hosting ogranicza wywołania, rozważ przejście na zadanie systemowe w panelu hostingu. Po zmianach obserwuj publikację kolejnych wpisów i logi zadań, aby potwierdzić, że harmonogram działa stabilnie.

Na koniec przeanalizuj wtyczki, które ingerują w harmonogram, kopie zapasowe i bezpieczeństwo. Ustal jeden spójny mechanizm uruchamiania zadań i usuń dublowanie. Po takiej korekcie zaplanowane wpisy powinny wrócić do przewidywalnego rytmu, a praca z treściami będzie zwyczajnie spokojniejsza.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *