Jak vypnout WP-Cron a nahradit ho systémovým cronem
WordPress ve výchozím nastavení spouští naplánované úlohy při každém načtení stránky — prostřednictvím mechanismu zvaného WP-Cron. Při vyšší návštěvnosti to znamená, že se soubor wp-cron.php spouští při každém požadavku, což zbytečně zatěžuje CPU.
Řešením je WP-Cron vypnout a nahradit ho systémovým cronem, který běží v pravidelných intervalech nezávisle na návštěvnosti. Celý přechod zabere přibližně 10–15 minut a sestává ze dvou kroků: úpravy jednoho řádku v konfiguraci WordPressu a nastavení cronu přes VPS Centrum nebo Zákaznický portál.
V tomto návodu vás celým postupem provedeme — včetně ověření, že vše funguje správně, a řešení nejčastějších problémů. Pokud s WordPressem teprve začínáte, doporučujeme také náš WordPress kompletní průvodce.
Rychlý přehled pro pokročilé
Tato část slouží pouze pro ověření pro velmi zkušené uživatele, kteří si chtějí pouze ověřit postup a nepotřebují číst celý článek. Pro všechny ostatní doporučujeme pokračovat další sekcí.
- Do souboru wp-config.php přidejte řádek define('DISABLE_WP_CRON', true); (nad komentář /* That's all, stop editing! */).
- Nastavte systémový cron pro spouštění wp-cron.php každých 15 minut (e-shopy: 5 minut). Na webhostingu přes Zákaznický portál → Domény → [doména] → Crony, na VPS přes VPS Centrum → detail domény → Crony.
- Ověřte funkčnost — naplánované úlohy ve WordPressu se spouštějí podle harmonogramu, zátěž CPU klesla.
Kompletní postup nastavení cronu (se screenshoty pro všechna rozhraní) najdete v návodu Co je to cron a jak ho správně nastavit.
Co je dobré vědět předem
Jak WP-Cron funguje a proč ho nahradit
WordPress nemá přímý přístup k systémovému plánovači úloh operačního systému. Proto si vytvořil vlastní mechanismus — WP-Cron. Ten funguje tak, že při každém načtení stránky WordPress zkontroluje, jestli není čas spustit některou z naplánovaných úloh. Pokud ano, spustí ji.
Jaké úlohy WordPress přes WP-Cron typicky spouští? Mezi nejběžnější patří publikování naplánovaných příspěvků, kontrola a instalace aktualizací pluginů a témat, odesílání e-mailových notifikací, zálohy (pokud používáte zálohovací plugin jako UpdraftPlus nebo BlogVault), zpracování objednávek v e-shopech (WooCommerce) a mazání starých revizí či dočasných dat. Všechny tyto úlohy přestanou fungovat, pokud WP-Cron vypnete a nenastavíte náhradu.
Tento přístup má dvě zásadní nevýhody:
Vysoká návštěvnost = zbytečná zátěž. Pokud váš web navštíví stovky lidí za minutu, soubor wp-cron.php se spouští při každém požadavku — i když žádná úloha na spuštění nečeká. To zatěžuje CPU, spotřebovává PHP procesy a může zpomalovat načítání stránek pro návštěvníky.
Nízká návštěvnost = nespolehlivost. Pokud na web naopak nikdo nepřijde (například v noci), naplánované úlohy se nespustí vůbec. Příspěvek naplánovaný na 6:00 ráno se publikuje, až když na web přijde první návštěvník — třeba v 9:00.
Systémový cron oba problémy řeší. Spouští se v pevně nastavených intervalech (např. každých 15 minut), nezávisle na tom, jestli web někdo navštíví. Nezatěžuje server při špičkách a spolehlivě funguje i v noci. Pokud vás zajímá, jak systémový cron funguje obecně (nejen v kontextu WordPressu), podívejte se na článek Co je to cron a jak ho správně nastavit.
Co budete potřebovat
- Přístup k souborům webu — přes Správce souborů v Zákaznickém portálu (webhosting) nebo ve VPS Centru V3, přes FTP klient, nebo přes SSH (VPS). Ve VPS Centru V2 Správce souborů není k dispozici — použijte FTP nebo SSH.
- Přístup do Zákaznického portálu (webhosting) nebo VPS Centra (VPS) — pro nastavení systémového cronu.
- Čas: 10–15 minut.
Krok 1 — Vypněte WP-Cron v konfiguraci WordPressu
Otevřete soubor wp-config.php v kořenovém adresáři vaší WordPress instalace. Kde ho najdete:
- Webhosting: Ve Správci souborů v Zákaznickém portálu (sekce Domény → [vaše doména] → Správce souborů).
- VPS Centrum V3: Ve Správci souborů v detailu domény (sekce Soubory). Případně přes SSH v adresáři /www/hosting/DOMENA/www/.
- VPS Centrum V2: Přes FTP klient nebo SSH v adresáři /www/hosting/DOMENA/www/ (Správce souborů není ve V2 k dispozici).

Do souboru přidejte následující řádek — ideálně těsně nad komentář /* That's all, stop editing! Happy publishing. */:
define('DISABLE_WP_CRON', true);
Tento řádek říká WordPressu, aby přestal automaticky spouštět wp-cron.php při každém načtení stránky. WordPress si bude naplánované úlohy nadále evidovat — jen je přestane sám spouštět. O jejich spouštění se postará systémový cron, který nastavíte v dalším kroku.
Soubor uložte.

Krok 2 — Nastavte systémový cron
Teď je potřeba zajistit, aby se soubor wp-cron.php spouštěl pravidelně — místo při každé návštěvě jen v pevně nastavených intervalech.
Žádný nový skript vytvářet nemusíte. Soubor wp-cron.php je standardní součástí každé WordPress instalace — najdete ho v kořenovém adresáři webu vedle wp-config.php a wp-login.php. V kroku 1 jste WordPressu řekli, aby tento soubor přestal automaticky spouštět při každém načtení stránky. Soubor samotný ale pořád existuje a je plně funkční — jen ho zatím nikdo nevolá. Systémový cron to teď převezme a bude ho spouštět v pravidelných intervalech za vás.
Cron nastavíte přes Zákaznický portál (na webhostingu) nebo přes VPS Centrum (na VPS). Kompletní postup nastavení cronu se screenshoty pro všechna rozhraní najdete v návodu Co je to cron a jak ho správně nastavit. Zde popíšeme jen hodnoty specifické pro WordPress.
Nastavení přes VPS Centrum nebo Zákaznický portál
Na webhostingu přejděte do Domény → [vaše doména] → Crony v Zákaznickém portálu. Na VPS otevřete detail domény ve VPS Centru a přejděte do sekce Crony. Klikněte na tlačítko pro přidání nového cronu.
VPS Centrum (V3 i V2) nabízí při vytváření cronu několik záložek — PHP skript, Zavolání URL a Vlastní příkaz. Pro WP-Cron doporučujeme záložku PHP skript — ta spouští soubor přímo přes PHP, lokálně na serveru pod doménovým uživatelem, bez nutnosti HTTP požadavku.
Jako interval doporučujeme 15 minut — pokrývá všechny standardní WordPress úlohy (naplánované příspěvky, kontrolu aktualizací, zálohy) bez zbytečného zatěžování serveru. Pokud provozujete e-shop (WooCommerce) nebo web s pluginy vyžadujícími častější zpracování (membership pluginy, e-mailové fronty), zkraťte interval na 5 minut.
| Pole | Hodnota |
|---|---|
| Účel / poznámka | WP-Cron pro DOMENA |
| Opakování | Každých 15 minut |
| Záložka | PHP skript |
| PHP skript | wp-cron.php |

Po vyplnění klikněte na Uložit cron. Po uložení se cron zobrazí v seznamu cronů domény s nastaveným intervalem. Ve VPS Centru V2 je navíc k dispozici možnost Spustit na test, která cron rovnou spustí — na webhostingu a ve V3 funkčnost ověříte postupem v sekci „Jak ověřit, že vše funguje“ níže.
Jak ověřit, že vše funguje
Po nastavení systémového cronu počkejte alespoň 15–30 minut (aby cron stihl alespoň jednou proběhnout) a ověřte:
Kontrola logů cronu
Ve VPS Centru V3: Logy cronu najdete přímo v rozhraní VPS Centra. Otevřete detail domény → Logy — v dolní části stránky uvidíte sekci Cron logy se dvěma soubory pro každý cron: info (standardní výstup) a error (chyby). Klikněte na Zobrazit u příslušného logu. Pokud je error log prázdný, cron běží bez problémů.

Stejné logy jsou dostupné i přes SSH v adresáři /www/hosting/DOMENA/tmp/cron/.
Ve VPS Centru V2 a na webhostingu: Logy cronu se ve výchozím stavu neukládají. Funkčnost ověříte kontrolou naplánovaných úloh ve WordPressu (viz další bod) nebo zapnutím WordPress debug logu (viz sekce Řešení problémů).
Kontrola přes plugin WP Crontrol
Nainstalujte a aktivujte plugin WP Crontrol. V administraci WordPressu přejděte do Nástroje → Cron Events. Uvidíte seznam všech naplánovaných úloh a časy jejich posledního a příštího spuštění. Pokud se úlohy spouštějí v pravidelných intervalech odpovídajících vaší konfiguraci (každých 15 minut), vše funguje správně.
Tato metoda ověření funguje na všech rozhraních — webhostingu, VPS Centru V3 i V2.
Kontrola zátěže CPU
Snížení zátěže CPU nepoznáte okamžitě — potřebujete srovnat data za několik dní před změnou a po ní.
Ve VPS Centru přejděte do sekce Monitoring → Statistiky. Uvidíte graf vytížení CPU za poslední 3 dny. Co hledat:
- Před změnou: Pokud WP-Cron zatěžoval server, graf typicky ukazuje opakované špičky, které kopírují návštěvnost webu — čím více návštěvníků, tím vyšší CPU. Špičky se objevují nepravidelně a v době vysoké návštěvnosti (dopoledne, odpoledne).
- Po změně: Špičky způsobené WP-Cronem zmizí. Můžete zaznamenat drobné pravidelné nárůsty každých 15 minut (to je systémový cron, který spouští wp-cron.php), ale ty by měly být výrazně nižší a rovnoměrnější než předchozí stav.

Řešení problémů
Naplánované příspěvky se nepublikují
Symptom: Příspěvky naplánované na konkrétní čas zůstávají ve stavu „Naplánováno“ i po uplynutí času.
Příčina: Systémový cron není správně nastavený nebo se nespouští. Případně je v souboru wp-config.php překlep v řádku s DISABLE_WP_CRON.
Řešení: Zkontrolujte, zda je cron aktivní:
- Webhosting: V Zákaznickém portálu přejděte do Domény → [vaše doména] → Crony a ověřte, že cron je v seznamu.
- VPS Centrum V3: Otevřete detail domény → Crony a ověřte, že cron má správný interval.
- VPS Centrum V2: Postup je analogický — v detailu domény zkontrolujte sekci Crony.
Na VPS můžete také ověřit přes SSH, zda se cron zapsal do systému. Ve V3:
cat /etc/cron.d/cron-vpsc-DOMENA
Ve V2:
cat /etc/cron.d/cron-admin
V obou případech byste měli vidět řádek s cestou k wp-cron.php a nastaveným intervalem.
Také ověřte, že řádek v wp-config.php je syntakticky správný. Musí vypadat přesně takto:
define('DISABLE_WP_CRON', true);
Pozor na správné apostrofy (ne typografické uvozovky), středník na konci a hodnotu true bez uvozovek.
Cron běží, ale úlohy se nespouštějí
Symptom: Cron je nastavený a v logách (VPS Centrum V3: detail domény → Logy → Cron logy) vidíte, že se spouští, ale WordPress úlohy zůstávají ve frontě.
Příčina: PHP skript wp-cron.php naráží na chybu — například nedostatek paměti, chybějící PHP modul nebo problém s připojením k databázi.
Řešení: Ve VPS Centru V3 nejdřív zkontrolujte chybový log cronu — otevřete detail domény → Logy → sekce Cron logy a klikněte na Zobrazit u logu s označením error. Případně přes SSH:
cat /www/hosting/DOMENA/tmp/cron/*-error.log
Pokud log obsahuje chybu typu Fatal error: Allowed memory size exhausted, zvyšte PHP paměťový limit přes VPS Centrum v detailu domény (nebo přes Zákaznický portál na webhostingu). Pokud vidíte chybu Fatal error: Call to undefined function, chybí PHP modul — podívejte se do návodu Jak aktivovat předinstalované funkce PHP.
Pokud log neobsahuje žádné chyby, ale úlohy se přesto nespouštějí, ověřte, že cron spouští správnou verzi PHP. Zkuste v nastavení cronu přepnout ze záložky PHP skript na Vlastní příkaz a zadat plnou cestu k PHP i ke skriptu:
/usr/bin/php /www/hosting/DOMENA/www/wp-cron.php
Tím získáte plnou kontrolu nad tím, co přesně se spouští, a případné chyby se zapíší do logu cronu.
Na webhostingu a ve VPS Centru V2 se logy cronu ve výchozím stavu neukládají. Zapněte si debug log přímo ve WordPressu — přidejte do wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Chyby pak najdete v souboru /www/hosting/DOMENA/www/wp-content/debug.log. Debug log je užitečný i na VPS Centru V3 jako doplněk k logům cronu — logy cronu zachytí chyby PHP, ale debug log zachytí chyby uvnitř WordPressu.
Po vyřešení problému nezapomeňte debug log zase vypnout (nastavte WP_DEBUG na false). Podrobnosti najdete v článku Zobrazení chyb ve WordPressu (debug log).
Zátěž CPU zůstává vysoká i po změně
Symptom: Přešli jste na systémový cron, ale zátěž CPU se nezlepšila.
Příčina: Vysokou zátěž způsobuje něco jiného než WP-Cron — například špatně optimalizované databázové dotazy, příliš mnoho aktivních pluginů, nedostatečný PHP memory limit nebo chybějící cache.
Symptom: Přešli jste na systémový cron, ale zátěž CPU se nezlepšila.
Příčina: Vysokou zátěž způsobuje něco jiného než WP-Cron — například špatně optimalizované databázové dotazy, příliš mnoho aktivních pluginů, nedostatečný PHP memory limit nebo chybějící cache.
Řešení: WP-Cron je jen jedním z možných viníků. Pro komplexní optimalizaci výkonu doporučujeme projít návod Jak zrychlit web, server a databáze. Pokud používáte VPS Centrum V3, zkontrolujte pomalé databázové dotazy přes Databáze → MariaDB → Slow log. Ve VPS Centru V2 je Slow log také k dispozici, ale je potřeba ho nejdříve aktivovat. Na webhostingu Slow log k dispozici není — pro diagnostiku pomalých dotazů kontaktujte naši podporu. Zvažte také nasazení cache pluginu (WP Super Cache, W3 Total Cache)
WP-Cron se stále spouští při načtení stránky
Symptom: I po přidání DISABLE_WP_CRON do wp-config.php se soubor wp-cron.php spouští při návštěvě webu. Typicky to poznáte v access logu — při každém požadavku se objeví řádek s wp-cron.php.
Příčina: Řádek s DISABLE_WP_CRON je na špatném místě v souboru — buď je za řádkem require_once ABSPATH . 'wp-settings.php'; (kde už je pozdě), nebo ho přepisuje jiný plugin či konfigurační soubor.
Řešení: Otevřete wp-config.php a ověřte, že řádek je umístěný nad komentářem /* That's all, stop editing! */ a nad řádkem s require_once. Pokud je na správném místě a problém přetrvává, zkontrolujte, zda některý plugin neobsahuje vlastní volání wp-cron.php — dočasně deaktivujte pluginy a ověřte, zda problém přetrvává.
Pokud problém přetrvává i po kontrole všech výše uvedených bodů, kontaktujte naši podporu — pomůžeme vám s diagnostikou.