Možná jste se s tím již setkali po aktualizaci WooCommerce na verzi 2.4. a vyšší. V pokladně se objednávka nepřesměruje na děkovnou stránku a místo toho se zobrazí chybové hlášení – SyntaxError: Unexpected token <.
A nic víc. Nikde žádná informace o souboru, v které se chyba nachází.
Díky tomu, že checkout ve WooCommerce je kontrolován pomocí AJAXu, může jít o jakoukoliv chybu, která se na stránce pokladny.
Mike Jolley uveřejnil na wordpress.org „řešení“, které je podle mne dost zvláštní https://wordpress.org/support/topic/24-common-issue-syntaxerror-unexpected-token?replies=1.
Vypnete zobrazování chyb a tváříte se, jako že se nic nestalo.
S tím jsem se ale nemohl smířit.
Ponořil jsem se do zdrojového kódu a našel jsem způsob, jak detekovat chybu, která hlášení způsobuje.
Ve složce woocommerce/assets/frontend najdete dva soubory, checkout.js a checkout.min.js.
Ty si nejprve zálohujte a otevřete soubor checkout.js.
Na řádku 359 najdete tento kód:
error: function( jqXHR, textStatus, errorThrown ) { wc_checkout_form.submit_error( '' + errorThrown + '' ); }
Ten upravte na:
error: function( jqXHR, textStatus, errorThrown ) { wc_checkout_form.submit_error( '' + errorThrown + '' ); console.log(jqXHR); }
V Chrome otevřete váš eshop, developerskou konzoli a záložku Console.
Pak vložte zboží do košíku a na stránce pokladny vytvořte objednávku.
Zápis v konzoli by měl zobrazit text, začínající – „object { readyState: 4, responseText:“.
V textu již najdete chybu, kterou je potřeba vyřešit.
Až chybu odstraníte, nezapomeňte znovu obnovit oba js soubory, protože jádro pluginu zásadně neupravujeme.