Nedávno jsem zjistil, že se na e-shopu, který spravuju, nenačítá produktová stránka. Místo fotky, ceny a tlačítka do košíku tam byl velký nadpis „Velké věci jsou na obzoru“ a pod ním věta, že obchod brzy spustíme.
Jenže ten obchod už několik týdnů normálně prodával.

Úvodní stránka přitom fungovala, články taky. Zavřené byly jen produkty, košík a pokladna, tedy přesně ta část webu, která vydělává.
Co to vlastně je
Novější WooCommerce má režim „Brzy k dispozici“ (anglicky Coming soon). Je určený pro obchody, které se teprve chystají: web už běží, ale zákazník místo zboží vidí upoutávku. Jedna jeho varianta schová jen stránky obchodu a zbytek webu nechá viditelný. Přesně ta se zapnula tady.
Nikdo ho nezapnul úmyslně. A nikdo si toho hned nevšiml.
Proč to nikdo neviděl
Protože ten režim platí jen pro nepřihlášené návštěvníky. Kdo je přihlášený v administraci, vidí obchod úplně normálně, s cenou i košíkem. Jediná stopa je malý štítek „Již brzy pro Obchod“ v horní liště a nenápadný pruh dole na stránce.

Majitel e-shopu nebo správce, který si web otevře ve stejném prohlížeči, ve kterém pracuje v administraci, tak vidí všechno v pořádku. Zákazníci ne.
Jak se to stalo
Odpověď byla v přístupovém logu serveru, tedy v záznamu všech požadavků, které na web přišly. Celý příběh se v něm odehrál během necelé minuty:
- Někdo se přihlásil do administrace.
- Klikl v menu na WooCommerce → Domů.
- WooCommerce usoudil, že obchod ještě neprošel úvodním průvodcem nastavení, a místo nástěnky ho do průvodce přesměroval.
- V průvodci zvolil „Přeskočit řízené nastavení“ a potvrdil zemi.
- O tři vteřiny později WooCommerce sám zapnul režim „Brzy k dispozici“.


Mezi otevřením průvodce a zavřením obchodu uběhlo sedmnáct vteřin. Nikdo nenavštívil nastavení viditelnosti, nikdo nic nepřepínal. Člověk chtěl jen přeskočit otravného průvodce a jít dál po své práci.
Proč tam vůbec průvodce byl? Web jsem stavěl na svém počítači a na server ho přenesl hotový. Průvodce na něm nikdy nikdo nedokončil, a tak WooCommerce považoval obchod za nový. A nový obchod podle něj patří za stránku „Brzy spustíme“, dokud ho někdo výslovně nespustí. Že už má za sebou objednávky, nekontroluje.

A k tomu ještě ceny
Průvodce udělal ještě jednu věc, které si nikdo nevšiml. Při potvrzení země přepsal formát cen podle výchozích hodnot pro Česko. Obchod měl ceny bez haléřů a po průvodci u všech najednou svítilo „,00″.
Takže pokud do průvodce omylem vlezete i vy, zkontrolujte si potom i WooCommerce → Nastavení → Obecné.
Jak to opravit hned
Ve WooCommerce otevřete Nastavení → Viditelnost webu, přepněte na Živě a uložte. Pokud máte na webu cache (W3 Total Cache, WP Rocket a podobně), vyprázdněte ji, jinak budou návštěvníci ještě chvíli dostávat uložené stránky se zavřeným obchodem.

Jak to zamknout natrvalo
Na obchodě, který už prodává, nemá tenhle režim co dělat. Nechtěl jsem tedy spoléhat na to, že nikdo nikdy neklikne vedle. Do webu jsem přidal malý mu-plugin (plugin, který WordPress načítá vždycky a nedá se v administraci vypnout) s jediným řádkem:
<?php
add_filter('pre_option_woocommerce_coming_soon', static fn() => 'no');
WordPress se tím při každém dotazu na tohle nastavení dozví „vypnuto“, ať je v databázi uloženo cokoli. Přepínač ve Viditelnosti webu pak zůstane vidět, ale nic neudělá. Obchod zůstane otevřený, i kdyby někdo průvodce prošel znovu.

Jedna past pro vývojáře: s tímhle filtrem už nastavení přes WordPress nepřepnete zpátky na „vypnuto“. WordPress před uložením porovná novou hodnotu se starou, a protože filtr i starou hodnotu hlásí jako no, usoudí, že není co ukládat. V databázi tak může dál ležet zapnutý režim z průvodce. Dokud mu-plugin běží, nevadí to. Než ho ale jednou smažete, opravte hodnotu woocommerce_coming_soon v databázi na no ručně, jinak se obchod znovu zavře.
Co si z toho odnést
Když se vám zdá, že web nefunguje, promažte cache a podívejte se na něj jako zákazník. Tedy v anonymním okně prohlížeče, nepřihlášení. Přihlášený správce vidí jiný web než návštěvníci.
Nechcete se trápit s technickou správou e-shopu a chcete mít po ruce někoho, kdo rychle zasáhne, když se něco pokazí? E-shop můžete svěřit do správy mně.