Szanujemy Twoją prywatność

Używamy plików cookies niezbędnych do działania strony. Za Twoją zgodą korzystamy też z cookies analitycznych (Google Analytics), żeby wiedzieć, co ulepszać, i marketingowych (piksel Meta, Google Ads), żeby mierzyć skuteczność reklam. Możesz zaakceptować wszystkie, odrzucić wszystkie albo wybrać samodzielnie. Polityka prywatności.

Hasło w słowniku

Cron job i WP-Cron w WordPress: co to jest i jak działa

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ć:

  1. W pliku wp-config.php wyłącz uruchamianie WP-Cron przy wejściach na stronę: define( 'DISABLE_WP_CRON', true );
  2. 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
  3. 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

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.

Z bloga

Najnowsze poradniki

Wszystkie wpisy