Cron job (zadanie cron) to polecenie, które serwer uruchamia automatycznie według harmonogramu, np. co 15 minut albo codziennie o północy. Nazwa pochodzi od narzędzia cron w systemach Unix i Linux, które pilnuje takiego harmonogramu.
WordPress ma własny mechanizm o tym samym zadaniu: WP-Cron. Publikuje zaplanowane wpisy, sprawdza aktualizacje i uruchamia zadania wtyczek, np. wysyłki maili albo czyszczenie danych.
Czym WP-Cron różni się od crona na serwerze
- Cron na serwerze działa w tle i uruchamia zadanie dokładnie o ustalonej porze, niezależnie od ruchu na stronie.
- WP-Cron nie działa w tle. Przy każdym wczytaniu strony sprawdza listę zaplanowanych zadań i uruchamia te, których czas minął. Gdy nikt nie odwiedza strony, zadania czekają.
Przykład z dokumentacji: zadanie zaplanowane na 14:00 może ruszyć dopiero o 17:00, jeśli wcześniej nikt nie wszedł na stronę. Pominiętego zadania WP-Cron nie gubi: wykona je przy najbliższym wczytaniu strony.
Kiedy zastąpić WP-Cron cronem na serwerze
- Strona ma mały ruch, a zadania muszą działać o czasie: publikacja wpisów, wysyłki, synchronizacja stanów magazynowych, kopie zapasowe.
- Strona ma duży ruch i nie ma sensu sprawdzać harmonogramu przy każdym wejściu.
- Zaplanowane wpisy nie publikują się o czasie i w panelu dostają oznaczenie o pominiętym harmonogramie (Missed schedule).
Jak to zrobić:
- W pliku
wp-config.phpwyłącz uruchamianie WP-Cron przy wejściach na stronę:define( 'DISABLE_WP_CRON', true ); - W panelu hostingu dodaj zadanie cron, które wywołuje plik
wp-cron.php, np. co 15 minut:*/15 * * * * wget --delete-after https://twojadomena.pl/wp-cron.php - Następnego dnia sprawdź, czy zaplanowane zadania się wykonały. Podgląd zadań daje np. wtyczka WP Crontrol.
Jak zaplanować własne zadanie
W wtyczce zadanie planujesz funkcją wp_schedule_event(). Warunek z wp_next_scheduled() jest konieczny, bo bez niego zadanie zapisze się przy każdym wczytaniu strony od nowa:
add_action( 'moja_wtyczka_sprzatanie', 'moja_wtyczka_sprzatanie' );
if ( ! wp_next_scheduled( 'moja_wtyczka_sprzatanie' ) ) {
wp_schedule_event( time(), 'daily', 'moja_wtyczka_sprzatanie' );
}
// Po wyłączeniu wtyczki usuń zaplanowane zadanie
register_deactivation_hook( __FILE__, function () {
$kiedy = wp_next_scheduled( 'moja_wtyczka_sprzatanie' );
if ( $kiedy ) {
wp_unschedule_event( $kiedy, 'moja_wtyczka_sprzatanie' );
}
} );
Na co uważać
- Na kopii testowej (staging) zadania z WP-Cron też się uruchamiają, np. wysyłki maili do klientów. Wyłącz je na kopii albo zablokuj wysyłkę poczty.
- Wtyczki zabezpieczające i hasło na całą stronę mogą blokować żądania do
wp-cron.php. Wtedy zadania nie ruszą wcale. - Po wyłączeniu WP-Cron bez dodania crona na serwerze zaplanowane zadania przestaną działać.
Powiązane hasła i poradniki
- Czym jest CRON na serwerze i do czego używamy go w WordPressie: pełny poradnik.
- Staging (strona testowa)
- Transients API
- Hook
- Planowanie postów w WordPress
Co to jest cron job?
Cron job to zadanie, które serwer uruchamia automatycznie według harmonogramu, np. co godzinę albo raz dziennie, bez udziału człowieka.
Czy WP-Cron działa, gdy nikt nie wchodzi na stronę?
Nie. WP-Cron uruchamia zadania przy wczytaniu strony, więc bez odwiedzin zadania czekają. Jeśli muszą działać o czasie, wyłącz WP-Cron i ustaw cron na serwerze.
Źródła: WordPress Developer: Cron, Scheduling WP Cron Events, Hooking WP-Cron Into the System Task Scheduler. Hasło zaktualizowane 19 października 2026.


