Aby wyłączyć WordPress Cron, dodaj w pliku wp-config.php stałą define('DISABLE_WP_CRON', true);, a następnie utwórz na serwerze zadanie CRON wywołujące adres /wp-cron.php. Oba kroki są konieczne. Samo wyłączenie WP-Cron zatrzyma zaplanowane zadania, ale ich nie zastąpi.
Dlaczego WP-Cron może obciążać stronę?
WP-Cron to wbudowany w WordPress mechanizm obsługi zaplanowanych zadań. Nie działa jednak jak klasyczny harmonogram uruchamiany niezależnie przez serwer. WordPress sprawdza kolejkę zadań przy obsłudze żądania, na przykład podczas wizyty użytkownika, wejścia do panelu administracyjnego albo wywołania innego endpointu.
W ten sposób mogą uruchamiać się między innymi publikacja zaplanowanego wpisu, wysyłka powiadomień, czyszczenie danych tymczasowych, synchronizacja danych czy zadania wykonywane przez wtyczki. Przy dużym ruchu takie sprawdzanie zwiększa zużycie CPU i może wydłużać czas odpowiedzi, w tym TTFB. Przy małym ruchu pojawia się odwrotny problem – zadanie może czekać do czasu kolejnej wizyty.
WP-Cron a CRON systemowy – różnice
| Cecha | WP-Cron | CRON systemowy |
|---|---|---|
| Sposób wyzwalania | Sprawdza zadania przy wywołaniu WordPressa. | Uruchamia komendę według harmonogramu serwera. |
| Obciążenie CPU | Może dołączać zadania techniczne do żądań użytkowników. | Oddziela zadania cykliczne od zwykłego ruchu na stronie. |
| Przewidywalność czasowa | Zależy od wizyt i może powodować opóźnienia. | Działa o określonej porze lub w stałych odstępach. |
CRON systemowy jest szczególnie przydatny na stronach z większym ruchem, sklepach WooCommerce, rozbudowanych integracjach oraz witrynach wykonujących importy lub synchronizacje. Na prostej stronie o małym ruchu różnica może być niewielka, ale po wyłączeniu WP-Cron trzeba skonfigurować jego zastępstwo.
Jak wyłączyć WP-Cron w pliku wp-config.php?
Przed edycją pliku wykonaj kopię zapasową plików WordPressa albo przynajmniej samego wp-config.php. Błąd składni PHP może spowodować błąd 500 lub uniemożliwić poprawne działanie strony.
- Otwórz katalog instalacji WordPressa – użyj menedżera plików w panelu hostingu, FTP albo SSH.
- Utwórz kopię pliku
wp-config.phpprzed wprowadzeniem zmian. - Edytuj plik i odszukaj komentarz
/* That's all, stop editing! Happy publishing. */. - Dodaj stałą przed tym komentarzem i zachowaj plik.
define('DISABLE_WP_CRON', true);
Jeżeli w pliku istnieje już stała DISABLE_WP_CRON, nie dodawaj drugiej. Sprawdź jej wartość i w razie potrzeby zmień ją na true. Po tej zmianie WordPress przestanie uruchamiać WP-Cron przy wizytach użytkowników.
Jak dodać CRON systemowy dla WordPressa?
Po wyłączeniu mechanizmu w konfiguracji dodaj zadanie cykliczne w panelu hostingu lub w systemowym crontabie serwera. Nazwy sekcji różnią się zależnie od panelu, ale zwykle znajdziesz je pod nazwą „Zadania CRON”, „Cron jobs” albo „Zadania cykliczne”.
- Zaloguj się do panelu hostingu albo połącz się z serwerem przez SSH.
- Otwórz sekcję zadań CRON i wybierz opcję dodania nowego zadania.
- Ustaw częstotliwość, na przykład co 5, 15 lub 30 minut. Konkretna wartość powinna zależeć od liczby i rodzaju zadań wykonywanych przez stronę.
- Wprowadź polecenie, zastępując przykładowy adres własną domeną.
wget -q -O - "https://twojadomena.pl/wp-cron.php?doing_wp_cron" >/dev/null 2>&1
Adres https://twojadomena.pl zamień na rzeczywisty adres swojej strony. Zachowaj poprawny protokół, domenę oraz ścieżkę /wp-cron.php. Błędny URL sprawi, że zadanie CRON będzie się uruchamiać, ale nie wywoła WordPressa.
Jeśli serwer nie udostępnia programu wget, panel może pozwalać na użycie cURL. Przykładowa forma polecenia wygląda tak:
curl -s "https://twojadomena.pl/wp-cron.php?doing_wp_cron" >/dev/null 2>&1
W przypadku konfiguracji przez SSH zadanie może mieć postać:
*/15 * * * * wget -q -O - "https://twojadomena.pl/wp-cron.php?doing_wp_cron" >/dev/null 2>&1
Ten zapis uruchamia wywołanie co 15 minut. Nie ustawiaj bardzo krótkiego interwału bez potrzeby, ponieważ zbyt częste wywołania mogą zwiększyć obciążenie serwera.
Jak sprawdzić konfigurację?
Po zapisaniu zadania sprawdź, czy pojawia się na liście zadań CRON i czy ma właściwy harmonogram. Następnie zweryfikuj działanie strony oraz zadań, które wcześniej korzystały z WP-Cron.
W razie problemów sprawdź następujące elementy:
- Czy w pliku
wp-config.phpznajduje się tylko jedna poprawna definicjaDISABLE_WP_CRON. - Czy komenda zawiera właściwą domenę i ścieżkę
/wp-cron.php. - Czy zadanie CRON uruchamia się zgodnie z ustawionym harmonogramem.
- Czy logi serwera nie pokazują błędów polecenia, połączenia HTTP albo blokady przez firewall.
Jeżeli po edycji wp-config.php pojawi się błąd 500, przywróć kopię pliku i sprawdź składnię wpisu. Gdy zadanie nie działa mimo poprawnej komendy, problem może wynikać z ograniczeń panelu, uprawnień serwera albo blokady połączeń wychodzących.
Najważniejsze jest wykonanie obu zmian: wyłączenie WP-Cron w wp-config.php oraz dodanie cyklicznego wywołania wp-cron.php po stronie serwera.