Chyba ParseError: syntax error, unexpected obvykle znamená, že PHP narazilo na neplatný zápis v kódu. Nejčastěji v pluginu, šabloně (theme) nebo v souboru, do kterého jste něco nedávno vložili (např. functions.php, fragment z návodu apod.). Dobrá zpráva: ve většině případů ji opravíte během pár minut.
Obsah článku
Jak chyba ParseError: syntax error, unexpected vypadá
Na obrazovce (nebo v error logu) uvidíte něco jako:
ParseError: syntax error, unexpected 'endif' (T_ENDIF) in /web/wp-content/themes/moje-tema/functions.php on line 123
Důležité jsou soubor a číslo řádku – to je místo, kde začněte.
Rychlá oprava ve 3 krocích (když se web hroutí)
- Přihlaste se přes FTP / správce souborů hostingu.
Jděte do/wp-content/. - Podezřelý plugin/šablonu dočasně vypněte přejmenováním složky.
- Plugin:
/wp-content/plugins/nazev-pluginu→nazev-pluginu.off - Šablona:
/wp-content/themes/nazev-sablony→ přepněte na výchozí (Twenty…); dočasně ji přejmenujte, WordPress sáhne po jiné dostupné.
- Plugin:
- Ověřte načtení webu.
Pokud web naskočí, příčina je v poslední změně (plugin, child theme, vložený kód). Pak opravte konkrétní soubor (viz níže), případně plugin/šablonu nahraďte čistou verzí.
Postup krok za krokem (systematická diagnostika)
1) Zjistěte přesné místo chyby
- Z chybové hlášky si opište soubor a řádek.
- Pokud se chyba nezobrazuje: v
wp-config.php(v kořenové složce WP) dočasně zapněte diagnostiku:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true); // log do wp-content/debug.log
define('WP_DEBUG_DISPLAY', false); // skryje chyby z frontendu
Pak si otevřete /wp-content/debug.log a najděte poslední záznamy.
Nezapomeňte po opravě WP_DEBUG vypnout (na produkci nenechávejte).
2) Otevřete soubor a zkontrolujte syntaxi
Nejčastější chyby:
- chybějící středník
; - neuzavřená závorka
)]} - špatně vložené uvozovky
'nebo" - vložený kód PHP bez
<?php ... ?> - cizí neviditelné znaky (BOM, “chytré uvozovky” z Wordu)
- nesprávně zakončené podmínky/smyčky (
endif;,endforeach;) - kód pro jinou verzi PHP (např. short closures
fn() =>na starším PHP)
3) Vraťte poslední úpravy / použijte čistý soubor
- Pokud jste vkládali snippet do
functions.php, dočasně ho zakomentujte nebo soubor nahraďte čistou verzí ze zálohy či balíčku šablony. - U pluginu zkuste čistou reinstalaci (složku pluginu smažte a nahrajte znovu).
4) Ověřte verzi PHP
- Běžte do administrace hostingu a zkontrolujte, že používáte podporovanou verzi PHP 8.x (doporučena aktuální stabilní verze, kterou podporuje vaše verze WordPressu a pluginy).
- Pokud chyba začala po upgradu PHP, vraťte se dočasně na předchozí minor verzi, opravte kód/aktualizujte plugin a poté znovu povyšte.
5) Konflikt pluginu nebo šablony
- Vypněte všechny pluginy (rychle: přejmenujte
/plugins/na/plugins.off/), web otestujte, a pak je vracejte po jednom. - Přepněte do výchozí šablony (Twenty Twenty-…) – pokud web běží, problém je v původní šabloně/child theme.
6) WP-CLI (pokročilé, pokud máte)
# vypnutí všech pluginů
wp plugin deactivate --all
# přepnutí šablony
wp theme activate twentytwentyfour
# debug info
wp core version
wp plugin list
wp theme list
Nejčastější hlášky a co znamenají
| Chybové hlášení (část) | Co to obvykle znamená | Jak opravit |
|---|---|---|
unexpected T_STRING | Nečekaný text – často chybí ; nebo uvozovka | Zkontrolujte řádek a předchozí řádek, doplňte ;/uvozovky |
unexpected ')' / '}' / ']' | Přebytečná závorka | Odstraňte navíc vloženou závorku |
unexpected end of file | Soubor končí uprostřed bloku | Doplňte }/)/endif; apod. |
unexpected 'endif' (T_ENDIF) | Používáte endif; bez odpovídajícího if: | Opravte styl zápisu nebo párování |
unexpected 'echo' (T_ECHO) | Příkaz na místě, kde se očekávala hodnota | Uzavřete PHP bloky správně, opravte syntaxi |
unexpected 'fn' (T_FN) | Kód používá short closures a běží na starším PHP | Aktualizujte PHP nebo přepište funkci na function () {} |
unexpected '=>' (T_DOUBLE_ARROW) | Špatná syntaxe pole (např. chybí [ nebo ,) | Zkontrolujte, zda pole začíná [ a prvky jsou oddělené čárkou |
syntax error, unexpected '<' | HTML vprostřed PHP bez uzavření ?> | Uzavřete/otevřete správně PHP bloky |
Příklady chyb a rychlá oprava
Chybí středník:
add_action('init', 'moje_funkce') // ← chybí ;
function moje_funkce() { ... }
Oprava:
add_action('init', 'moje_funkce');
function moje_funkce() { ... }
Neuzavřená závorka:
if (isset($x) && is_array($x) {
// ...
}
Oprava:
if (isset($x) && is_array($x)) {
// ...
}
Chytré uvozovky z Wordu:
echo “Ahoj svět”; // špatně
Oprava:
echo "Ahoj svět";
Prevence do budoucna
- Editor kódu s kontrolou syntaxe (VS Code, PhpStorm).
- Child theme – úpravy dělejte v child šabloně, ne v jádru.
- Verzování (Git) a zálohy před každou úpravou.
- SFTP místo webových editorů, které mohou přidat BOM/znaky.
- Kompatibilita: před upgradem PHP zkontrolujte pluginy/šablony (changlogy, test na stagingu).
Moje řešení
Koupil jsem jeden web postavený na WordPress, který nebyl několik let aktualizovaný a při během aktualizace mi to hodilo tuto hlášku. Pokud se potýkáte s podobným problémem, podívejte se, jak to vyřešit.

Původní webhosting jel na historické verzi PHP 5.4 a po přepnutí na PHP 7.3 mi to vyhodilo přesně tuto chybu. Takže jsem to vrátil zpět a vše zaktualizoval, jak samotný WordPress, tak i pluginy a šablony.
Poté následně po přepnutí na to PHP 7 už vše fungovalo bez problémů.
Může se ale stát, že bude problém v některém pluginu, takže doporučuji jít postupně a ty, které opravdu nevyužijete (zde jich bylo snad 20), můžete s klidem smazat, nebo minimálně deaktivovat.
Často kladené otázky
PHP narazilo na znak/klíčové slovo, které v daném místě nečekalo. Nejčastěji jde o chybu v interpunkci (středník, závorky, uvozovky) nebo o kód vložený do špatného místa.
Ne vždy. Velmi často je na předchozím řádku (chybějící ; před řádkem 123 způsobí pád až na 123).
Přes FTP/správce souborů: přejmenujte složku problematického pluginu/šablony (deaktivuje se), opravte soubor, případně nahrajte čistou verzi.
Ano. Kód využívající nové konstrukce (např. fn() =>) spadne na starším PHP. Řešením je aktualizace PHP nebo úprava kódu na kompatibilní syntaxi.
Obvykle není nutná. Problém bývá v konkrétním pluginu/šabloně nebo v poslední ruční úpravě. Přeinstalace jádra chybu v pluginu neřeší.
Po zapnutí WP_DEBUG_LOG v wp-config.php se log zapisuje do /wp-content/debug.log. Další logy bývají v administraci hostingu.
Ne. Po dokončení diagnostiky jej vypněte – kvůli výkonu i bezpečnosti.
Odkazy
- WordPress nefunguje. Jak to opravit a přihlásit se
- Další web používající WordPress – kde to upravit
- Push notifikace nastavíte pomocí OneSignal pluginu
- Během připojování k databázovému serveru došlo k chybě
- Jak zlepšit zabezpečení WordPress vypnutím XML RPC
Buďte první kdo přidá komentář