Strona główna  /  Hosting i domeny  /  WordPress cron nie działa – jak naprawić ten problem?

✦ AI
Serwerownia z migającymi diodami i ikoną zegara, symbolizująca automatyzację procesów w środowisku WordPress.

WordPress cron nie działa – jak naprawić ten problem?

Gdy WordPress cron nie działa, zaplanowane wpisy, kopie zapasowe lub zadania wtyczek mogą wykonywać się z opóźnieniem albo nie uruchamiać się wcale. Najczęstszą przyczyną jest zależność WP-Cron od ruchu na stronie. Najpewniejsza naprawa polega na wyłączeniu WP-Cron i zastąpieniu go cronem systemowym serwera.

Dlaczego WP-Cron nie działa?

WP-Cron jest wbudowanym, „wirtualnym” mechanizmem harmonogramu WordPressa. Nie działa jak zegar systemowy uruchamiany niezależnie od strony. WordPress sprawdza oczekujące zadania przy wywołaniu witryny, panelu administracyjnego lub innego procesu opartego na PHP.

Przy małym ruchu zaplanowany wpis może czekać do pierwszej wizyty użytkownika. Z kolei przy dużej liczbie odwiedzin sprawdzanie harmonogramu może być wykonywane zbyt często, obciążając PHP, bazę danych i procesy PHP-FPM. Problem pogłębia cache stron, ponieważ żądanie obsłużone z pamięci podręcznej może ominąć PHP i nie uruchomić WP-Cron.

Typowe objawy niedziałającego lub opóźnionego mechanizmu to:

  • zaplanowane wpisy nie publikują się o wyznaczonej godzinie
  • kopie zapasowe lub synchronizacje uruchamiają się z opóźnieniem
  • newslettery i powiadomienia nie są wysyłane zgodnie z harmonogramem
  • zadania wykonują się dopiero po wejściu na stronę lub do panelu WordPressa

Do wstępnej diagnozy możesz użyć wtyczki WP-Cron Status Checker. Jej raport pomaga sprawdzić, czy WordPress widzi zaplanowane zdarzenia i czy mechanizm próbuje je wykonywać. Jeśli hosting blokuje wywołania cron lub raport pokazuje błędy, sprawdź także dokumentację dostawcy albo skontaktuj się z jego pomocą techniczną.

WP-Cron czy cron systemowy?

Systemowy cron działa po stronie serwera i uruchamia wskazane polecenie zgodnie z harmonogramem. Nie czeka na wizytę użytkownika, dlatego lepiej nadaje się do zadań, które powinny wykonywać się regularnie lub o określonej porze.

Cecha WP-Cron Systemowy cron
Sposób wyzwalania Przy wywołaniu WordPressa przez użytkownika lub proces serwera Według harmonogramu systemu operacyjnego
Niezawodność czasowa Zależy od ruchu i może powodować opóźnienia Nie zależy od liczby odwiedzin
Wpływ na serwer Może obciążać żądania użytkowników i bazę danych Oddziela zadania techniczne od obsługi strony
Konfiguracja Działa domyślnie po instalacji WordPressa Wymaga ustawienia zadania w panelu hostingu lub crontabie

Jak naprawić niedziałający cron w WordPressie?

Najbardziej przewidywalne rozwiązanie to wyłączenie automatycznego wywoływania WP-Cron i uruchamianie pliku wp-cron.php przez cron systemowy. Zrobisz to w dwóch etapach.

Ostrzeżenie: po dodaniu stałej DISABLE_WP_CRON WordPress przestanie sam uruchamiać zaplanowane zadania. Jeśli nie skonfigurujesz od razu zadania w crontabie lub panelu hostingu, zadania przestaną działać całkowicie.

  1. Zabezpiecz plik konfiguracyjny. Zrób kopię wp-config.php przed edycją. Błędny wpis w tym pliku może spowodować błąd witryny, dlatego korzystaj z menedżera plików, SFTP albo SSH i zachowaj możliwość przywrócenia poprzedniej wersji.
  2. Wyłącz WP-Cron. Otwórz plik wp-config.php i dodaj poniższą linię przed komentarzem /* That's all, stop editing! Happy publishing. */:
    define('DISABLE_WP_CRON', true);
  3. Dodaj zadanie systemowe. W panelu hostingu znajdź sekcję zadań Cron lub użyj polecenia crontab -e na serwerze. Ustaw wywoływanie pliku WordPressa co 15 minut, korzystając z komendy:
    */15 * * * * wget -q -O - "https://domena.pl/wp-cron.php?doing_wp_cron" >/dev/null 2>&1

    Zastąp domena.pl adresem swojej witryny. Jeśli na serwerze nie ma programu wget, hosting może udostępniać wariant z curl. Składnia zadania zależy wtedy od środowiska serwera.

  4. Zapisz i sprawdź wykonanie. Zweryfikuj, czy zadanie pojawia się w panelu hostingu i czy logi nie pokazują błędów. Następnie sprawdź, czy zaplanowany wpis lub inne zadanie WordPressa zostało wykonane.

Interwał 15 minut jest uniwersalnym przykładem. Możesz ustawić krótszy odstęp, jeśli wymaga tego wtyczka obsługująca importy, synchronizacje lub kolejki zadań. Nie ustawiaj jednak bardzo częstego wywoływania bez sprawdzenia wpływu na serwer.

Co sprawdzić, jeśli cron nadal nie wykonuje zadań?

Jeżeli systemowy cron uruchamia wp-cron.php, ale konkretne zadania nadal pozostają niewykonane, przyczyna może leżeć poza samym harmonogramem. Przed dalszą edycją plików serwerowych sprawdź:

  • czy wtyczka odpowiedzialna za zadanie nie zgłasza własnego błędu lub konfliktu
  • czy motyw nie zawiera błędu w pliku functions.php
  • czy hosting nie blokuje żądań HTTP, procesów Cron albo dostępu do wymaganych usług
  • czy adres domeny i protokół HTTPS w komendzie są poprawne

Jeśli po zmianie motywu na domyślny lub czasowym wyłączeniu wtyczek zadania zaczynają działać, problem najpewniej dotyczy konfliktu kodu. Na hostingu bez dostępu do crontaba poproś administratora o sprawdzenie harmonogramu i logów serwera.

Najczęściej przywrócenie działania polega na zastąpieniu zależnego od ruchu WP-Cronem systemowym cronem. Zabezpiecz wp-config.php, dodaj DISABLE_WP_CRON, a następnie skonfiguruj wywoływanie wp-cron.php w crontabie. Bez tego ostatniego kroku wyłączenie WP-Cron zatrzyma zaplanowane zadania zamiast je naprawić.

Redakcja wpinternals.pl

WordPressa znamy od kuchni – budujemy na nim strony, migrujemy serwisy i optymalizujemy ich wydajność. Piszemy o wtyczkach, motywach, hostingu i bezpieczeństwie tak, by poradzili sobie także początkujący. Dbamy o to, by Twoja strona była szybka, stabilna i bezpieczna.

Może Cię również zainteresować

Potrzebujesz więcej informacji?