WordPress Cron Jobs - zaplanowane zadania

WordPress ma własny system planowania zadań - WP-Cron. Używany do publikacji zaplanowanych postów, backupów, aktualizacji i czyszczenia. Ale ma swoje ograniczenia. Pokażę jak działa i jak go zoptymalizować.

Krótka odpowiedź

WP-Cron uruchamia zadania przy wizycie na stronie (nie w tle). Problem: na stronach z małym ruchem zadania się opóźniają. Rozwiązanie: wyłącz WP-Cron, użyj systemowego crona. Zadania w WordPress: zaplanowane posty, backupy, aktualizacje wtyczek, czyszczenie.

Jak działa WP-Cron

Mechanizm:
- Użytkownik odwiedza stronę
- WordPress sprawdza czy są zaległe zadania
- Jeśli tak - wykonuje je
- Następnie ładuje stronę

Problemy:
- Brak ruchu = brak wykonania zadań
- Zadania opóźnione o godziny/dni
- Może spowalniać ładowanie strony
- Wiele jednoczesnych requestów = chaos

Typowe zadania WP-Cron:
- wp_publish_scheduled - publikacja postów
- wp_update_plugins - sprawdzanie aktualizacji
- delete_expired_transients - czyszczenie cache
- Backupy (UpdraftPlus)
- Mailing (MailPoet)

Wyłączenie WP-Cron i użycie systemowego

Krok 1: Wyłącz WP-Cron:
Dodaj do wp-config.php:
```php
define('DISABLE_WP_CRON', true);
```

Krok 2: Ustaw systemowy cron:
W crontab serwera:
```
*/15 * * * * wget -q -O - https://domena.pl/wp-cron.php?doing_wp_cron >/dev/null 2>&1
```
Lub:
```
*/15 * * * * curl https://domena.pl/wp-cron.php?doing_wp_cron >/dev/null 2>&1
```

Częstotliwość:
- Co 15 minut dla większości stron
- Co 5 minut dla sklepów/aplikacji
- Co godzinę dla blogów

W panelu hostingu:
- cPanel → Cron Jobs
- DirectAdmin → Zadania Cron
- CloudPanel → Cron

Debugowanie i zarządzanie zadaniami

WP Crontrol (wtyczka):
- Podgląd wszystkich zaplanowanych zadań
- Ręczne uruchomienie zadania
- Edycja/usuwanie zadań
- Dodawanie własnych zadań

Narzędzia → Cron Events:
- Lista wszystkich hooków cron
- Następne wykonanie
- Interwał (hourly, daily, etc.)

WP-CLI:
```bash
# Lista zadań
wp cron event list

# Uruchom wszystkie zaległe
wp cron event run --due-now

# Uruchom konkretne
wp cron event run wp_update_plugins
```

Debugowanie:
```php
// Sprawdź następne wykonanie
wp_next_scheduled('hook_name');
```

Własne zaplanowane zadania

Tworzenie zadania:
```php
// Rejestracja interwału (jeśli niestandardowy)
add_filter('cron_schedules', function($schedules) {
$schedules['every_6_hours'] = [
'interval' => 21600, // 6h w sekundach
'display' => 'Every 6 Hours'
];
return $schedules;
});

// Zaplanowanie zadania
if (!wp_next_scheduled('my_custom_event')) {
wp_schedule_event(time(), 'every_6_hours', 'my_custom_event');
}

// Akcja przy wykonaniu
add_action('my_custom_event', function() {
// Twój kod
});
```

Usuwanie zadania:
```php
wp_clear_scheduled_hook('my_custom_event');
```

Wspomniane narzędzia

WP-Cron WP Crontrol WP-CLI cron

Najczęściej zadawane pytania

Dlaczego zaplanowane posty się nie publikują?
Zwykle problem z WP-Cron - brak ruchu na stronie lub zablokowany wp-cron.php. Rozwiązania: 1) Użyj systemowego crona, 2) Sprawdź czy wp-cron.php jest dostępny (403 = problem), 3) Zainstaluj WP Crontrol i ręcznie uruchom zadanie publikacji.
#wordpress#cron#automatyzacja#zadania#wp-cron

Potrzebujesz pomocy specjalisty?

Skorzystaj z naszych usług w największych miastach Polski