Obrátil se na mě klient s žádostí řešení situace, kdy má firma s celoevropskou působností svůj hlavní mezinárodní web a cca 10 webů poboček v různých státech (a jazycích), a ty by měly ideálně bezpracně zobrazovat fotogalerii referencí z hlavního mezinárodního webu. Tamní rozsáhlá fotogalerie obsahuje cca 600 referencí s kvalitními a poutavými fotografiemi a je neustále doplňovaná … jenže to samé provádět na webech všech národních poboček by bylo nepříjemně pracné (vložení nové galerie na hlavní web by obnášelo desetkrát tento úkon opakovat i na ostatních webech). Ovšem tyto kvalitní fotografie tam nemít by zase bylo trestuhodné nevyužití jejich potenciálu.

(Pokračování textu…)

Nedávno jsem dokončil zakázku na propojení webu realitní společnosti Luneta reality a její databáze nemovitostí v realitním systému Urbium. Použil jsem svůj Urbium WordPress plugin. Web společnosti využívá tradičně rozsáhlou placenou „realitní“ šablonu, která sama obsahuje možnost kompletní správy nemovitostí, ale to vše by musel klient řešit ručně bez možnosti automatizace – nejdříve by své nemovitosti zadával v Urbiu (aby byly kopírovány na inzertní servery), a poté by je musel znovu zadávat v administračním rozhraní šablony, aby se zobrazovaly na jeho webu.

Můj plugin zajistil jejich zkopírování z Urbia na web, a dále bylo třeba připravit „na míru“ jejich zakomponování do šablony. Díky tomu, že šlo o realitní šablonu, nebylo třeba vymýšlet něco nového, ale mohl jsem rovnou zvolit z několika předpřipravených podob přehledu nemovitostí a jejich detailových stránek (tedy to si samozřejmě zvolil klient). Přesto to obnášelo podrobné zpětné inženýrství, kdy jsem ze šablony vyzobával jednotlivé prvky a nechával je zobrazovat mým pluginem. Jde o situaci, kdy šablona o žádných nemovitostech neví (žádné ve své správě nemá), ale ví, jak mají případně vypadat, zatímco můj plugin nemovitosti má (stáhl si je z Urbia), ale neví, v jaké podobě je na webu prezentovat.

Po drobných finálních laděních a úpravách je vše hotové a funkční.

Obrátil se na mě zákazník s prosbou o vyřešení problému s napadeným WordPress webem, který během posledních 24 hodin rozeslal cca 25 000 spamových emailů, a jejich hosting jim ho vypnul. Ihned jsem se pustil do práce. V přeposlaném e-mailu od hostingu byla ukázka z logu, kde byly spamové requesty očividně zastoupeny voláním „POST /wp-admin/admin-ajax.php“. Už to mi mělo napovědět, že to nebude úplně běžné napadení – to se totiž nesoustředí jen na jeden soubor, ale má rozesetá zadní vrátka po celém webu.

(Pokračování textu…)

Již snad 15 let (ne-li déle) spravuji webové stránky svému (nyní již bývalému) bydlišti – obci Vír (www.virvudolisvratky.cz). Ještě během studií na gymnáziu jsem vytvořil jednoduchý „neoficiální“ webík, později jej přenesl na vlastní redakční systém, poté na jeho novou verzi … nejstarší zveřejněné informace jsou z roku 2006. Použitý redakční systém jsem již ovšem přestal rozvíjet a udržovat, toto „objevování kola“ nebylo po ekonomické stránce smysluplné. Naopak bylo stále zřejmější, že by bylo vhodné tento pomalu zastarávající web přenést na redakční systém WordPress.

(Pokračování textu…)

Nedávno jsem dokončil zakázku, kde jsem měl původně propojit WordPress web s realitní datábází Urbia, ale nakonec jsem realizoval celý nový web (na základě grafického návrhu). V rámci práce jsem nakonec také celý svůj původní Urbium plugin zahodil, a začal jej programovat úplně nově. Prvotní verzi jsem vytvořil v roce 2013, tuším jako úplně první WordPress plugin, s minimálními zkušenostmi, jak to dělat správně. Nyní o tři roky a desítky pluginů později jsem již měl naprosto jasnou představu, jak to udělat „co nejlépe“. A než se tedy v rámci této zakázky potýkat se starým a nekvalitně naprogramovaným pluginem, tak jsem jej naprogramoval úplně nově a mnohem kvalitněji.

Zdánlivě se nic moc nezměnilo, ale reality se nyní importují jako „posty“ (tedy nativní WP objekty), a z toho vyplývá, že je možné pro ně připravit vlastní šablony přímo v tématu vzhledu. A vše je programováno s ohledem na budoucí rozšiřitelnost – aby případná rozšíření funkčnosti neznamenala nutnost přepsání jádra pluginu. Spousty dalších vylepšení.

Mioweb je rozšíření WordPressu doplňující do něj možnosti prodeje infoproduktů (on-line kurzy, školení, e-booky,…) a snadné tvoření propracovaných stránek „skládáním“ mnoha rozmanitých prvků (nadpisy, obrázky, videa, formuláře, …) v tzv. „builderu“. Nechci rozepisovat, co Mioweb umí – už proto, že jej jako programátor nemám rád 😀 Proč to? Protože na Miowebem poháněném webu je spousta úkonů snadných v tradiční instalaci WordPressu najednou extrémně komplikovaná až nemožná, a klienti to obtížně chápou.

Obrátil se na mě klient s požadavkem: „Mám na webu členskou sekci rozdělenou do sedmi kapitol, a registrační formulář. Chci, aby se každý registrovaný uživatel mohl na 15 minut podívat do každé kapitoly (obsahují videa a články), ale pak mu bylo toto oprávnění zrušeno. Po 15 minutách by se mu již zobrazil pouze objednávkový formulář a za přístup do všech kapitol by musel zaplatit.“ 

(Pokračování textu…)

V pondělí ráno jsem usedl s kávou k počítači a přemýšlel, do které práce se pustím nejdříve, když mi přišel e-mail s prosbou o vyřešení „hacku“ WP webu mého několikaletého klienta (kterému jsem původně implementoval platební bránu). Provozovatel hostingu web vypnul, protože rozesílal tisíce spamových e-mailů denně – jasná známka napadení webu a jeho zneužití k nekalým účelům. Tyto problémy „mám rád“, protože je to vždy něco nového, souboj s neviditelným nepřítelem, zákopový boj digitální války 🙂

(Pokračování textu…)

Nedávno jsem se dostal ke dvěma různým webům na WordPressu, které napadli neznámí útočníci. Každý z hacků byl naprosto odlišný, a obsa se mi povedlo – zdá se – zdárně vyřešit.

(Pokračování textu…)

Pokud vám společnost Energomonitor nic neříká, pak jde o českou firmu vyvíjející „chytré“ měřiče spotřeby energií, vody a plynu pro domácnosti a firmy. Nemusí se to zdát převratné, ale třeba za pár let bude taková krabička v každém domě – a tato firma bude špičkou ve svém oboru 🙂 Sleduji je, znám je, fandím jim.

Proto když mi v pátek o čtvrt na pět večer volalo cizí číslo a představil se mi kdosi „z firmy energomonitor“, tak jsem si nejdříve myslel, že jsem se přeslechl. Nakonec z rozhovoru vyplynulo, že mají na svém webu nasazený WooCommerce e-shop, koupili si plugin pro GoPay platební bránu od mé „konkurence“ :-), a ten nefunguje – objednávka skončí chybou. Autor pluginu nebyl schopný zjistit chybu, a vzdal její hledání. Odpovědný pracovník tedy hledal jiný WooCommerce GoPay plugin, a našel můj web … a tak vědom si ne právě ideálního času, přesto tento problém potřeboval do pondělní porady vyřešit. Poslal jsem mu svůj plugin, ale ani ten nefungoval. To mě přesvědčilo, že problém bude v nějaké chybějící technologii na straně serveru, kterou komunikace s GoPay bránou vyžaduje. Šel jsem po jednotlivých blocích kódu … navázání spojení technologií Soap? Na serveru podporováno. Co tam je dál? Sestavení zakódovaného podpisu komunikace … funkcemi z modulu Mcrypt. Hm, a vida, na serveru tento modul není nainstalován. Oznámil jsem své zjištění, a po úpravě konfigurace serveru se platební brána úspěšně rozjela. Pracovník vrátil zpět původní plugin, který již měl zakoupen, a objednávky měřičů spotřeby již můžete platit i kartou 🙂

Odmítl jsem jakoukoli odměnu, byl jsem rád, že jsem mohl Energomonitoru pomoci … nakonec, třeba ode mě jako od „WordPress profíka“ (jejich slova) budou časem potřebovat něco jiného 🙂 Přesto jsem dostal slevový poukaz na objednávku některého z jejich produktů, tak jej třeba využiji v plánovaném novém domově. Inu, proč ne?

Nedávno jsem dokončil integraci GoPay platební brány pro WordPress e-shopový plugin WooCommerce. Na cílovém webu je eshop zakomponován téměř „tajně“, vůbec tam nenarazíte na tradiční kategorie a přehledy produktů … klientka si pouze přála vkládat do stránek samostatná tlačítka „Vložit do košíku“ k libovolnému obsahu – nabízí výukové kurzy a výukové materiály. Přehled produktů a kategorie tedy vůbec nepotřebovala, na druhou stranu chtěla zachovat funkčnost nákupního košíku, tedy aby si zákazník mohl vložit do nákupního košíku více kurzů, a pak vše zaplatit najednou. Tedy takový e-shop bez e-shopu 🙂

Při implementaci jsem narazil na několik zajímavých úskalí. Především v nastavení WooCommerce zůstalo chybně nastaveno „hlídání skladových zásob“, ač to u klientky prodávající e-book nebo výukové kurzy nemělo smysl, a zdánlivě to ničemu nevadilo. Aniž bych to tušil, tak toto nastavení způsobovalo, že WooCommerce automaticky stornoval objednávky, které nebyly do hodiny dokončené (= zaplacené). A protože klienta využívala i GoPay bankovní převod, který z logiky věci den dva trvá, tak na to záhy narazila. I když zákazník druhý den objednávku uhradil, a platební brána peníze přijala, tak WooCommerce již objednávku dávno vedl jako stornovanou, a nehodlal odeslat žádný e-mail s ebookem (…). Inu, už vím, na co si příště dávat pozor 🙂

Budete-li mít zájem o implementaci platební brány GoPay do WooCommerce e-shopu, můžete se na mě obrátit, už vím, jak na to.