Update webu UniqueWeb.cz na WordPressu

První verze webu měla již nejlepší léta za sebou, tedy lépe řečeno, její grafický design. V současné době totiž dochází ze strany vyhledávačů k penalizaci pro weby nepodporující mobilní zařízení. A to je problém, pokud cílíte na určitá klíčová slova a chcete obsadit přední pozice. Nebyl tedy důvod update již dále odkládat.

Původně web běžel na WordPressu a jako alternativní řešení jsem zvažoval použití ForkCms. To je také uvolněno pod Opensource licencí a je postaveno na Symfony 3.4. To je ideální volba pro aplikace otevřené dalšímu vývoji, jelikož je tato platforma velmi rozšířená a jsou pro ni dotupná další hotová řešení. Nicméně pro potřeby tohoto webu do budoucna s dalším rozšiřováním funkcionalit nepočítám a současná pro tvorbu obsahu plně vyhovuje. Rozhodnutím tedy bylo zůstat nadále na paltformě WordPress. Dalším neméně důležitým motivem je také udělat si představu o současném stavu tohoto projektu, celého ekosystému pluginů a směřování jeho dalšího vývoje.

 

Co bylo nutné vyřešit:

  1. Nová responzivní šablona postavená na frameworku bootstrap
  2. Definice vlastní taxonomie pro vkládání obsahu portfolia
  3. Update aplikace a pluginů, aby jej bylo možné provozovat na nejnovější verzi PHP 7.3
  4. Celková optimalizace webu, aby vše fungovalo korektně

 

Nová responzivní šablona postavená na frameworku bootstrap

Návrh nové šablony se ukázal být větším problémem, než jsem původně očekával. Mám totiž dosti specifické představy o designu a funkčnosti webu. Přestože jsem prošel desítky jak volně dostupných, tak i placených šablon, žádnou vyhovující mým potřebám jsem nenašel. Drtivá většina se jich totiž primárně zaměřuje na design, čímž je jejich použitelnost pro tvorbu různorodého obsahu velmi limitující. Primárně se zaměřuji na jednoduchý design a přehlednost, v tomto směru mi vyhovuje rozmístnění prvků ve stylu starších webů, kdy je menu vpravo a obsah vlevo. Uživatel tak vidí, kde se v rámci struktury webu právě nachází. Tohoto konceptu jsem se tedy držel i nadále.

 

Definice vlastní taxonomie pro vkládání obsahu portfolia

Původně nebylo možné používat vlastní taxonomii a řešením pro tvorbu obsahu portfolia bylo využití tagování příspěvků, pomocí něhož lze obsah rozdělit prakticky libovolně. Při editaci ale docházelo ke smísení všech přípěvků a nebylo to zkrátka příliš pohodlné, ani přehledné. Pohodlnější je vytvořit samostatnou entitu Portfolio a tu pak spravovat z jiného místa. Navíc je možné vytvořit pro každou entitu různé typy polí a editace je tak značně jednodušší.

Základem řešení se stal plugin Portfolio Post Type, ten jsem si upravil podle potřeby a pak již jen stačilo vytvořit šablonu, kde se data zobrazují zákazníkům.

 

Update aplikace a pluginů, aby jej bylo možné provozovat na nejnovější verzi PHP 7.3

Tady se již začalo pomalu ukazovat, jak se WordPress liší od jiných řešení. Jelikož se jedná o velmi rozšířenou aplikaci, existuje velké množství zranitelností, které se útočníci snaží využít k ovládnutí webu, případně samotného serveru, na kterém běží. Je tedy velmi důležité udržovat WordPress aktualizovaný. To je ale pouze první část problému. Ve výsledné verzi používám desítky další pluginů, které je nutné také udržovat aktuální, což může na první pohled znít triviálně, ale při výběru pluginů je nutné toto vzít také v potaz a dobře vybírat. Některé z nich se již totiž přestaly dále vyvíjet, nebo se například z volně dostupného řešení stalo placené. Primárně jsem se zaměřil na volně dostupné řešení a nutno říci, že to je stále možné, i když za cenu určitých znalostí. Tento web žádné placené řešení nepoužívá, lze je tedy možné získat zdarma.

Seznam použitých modulů, které doporučuji:

  • Add Categories to Pages – přidá podporu kategorií a tagů pro stránky
  • Admin Favicon – zobrazí favicon z frontendu i pro administraci
  • Advanced Categories Widget – výborný widget, který slouží pro zobrazování kategorií
  • Advanced Database Cleaner – slouží pro optimalizaci databáze a mazání nevyužitého obsahu (revizí, konceptů)
  • AVH Extended Categories Widgets – další widget pro zobrazování kategoríí
  • Balíček All In One SEO – nutné pro SEO každého webu
  • Bootstrap for Contact Form 7 – pro vytvoření kontaktního formuláře kompatibilním s bootstrap frameworkem
  • Breadcrumb NavXT – vytváří drobečkovou navigaci pro usnadnění orientace v obsahu webu
  • Broken Link Checker – informuje správce webu o neplatných odkazech
  • Comet Cache – aby Váš web byl rychlý a server se příli nezapotil, vytvoří cache s vyrenderovaným obsahem
  • Contact Form 7 – kontaktní nebo jakýkoliv další formulář pro uživatele
  • Contact Form CFDB7 – uloží požadavek z formuláře do databáze
  • Custom Link Widget – widget pro vytváření vlastních linků
  • Custom Post Type Permalinks – lze si nastavit vlastní přepis url pro taxonomii
  • Dagon Design Sitemap Generator – vytvoření sitemapy webu, již se dále nevyvíjí, musel jsem si jej upravit sám
  • Disable XML-RPC – vypnuto z důvodu nepoužívání této funkcionality
  • Disable XML-RPC Pingback – z bezpečnostích důvodů také vypnuto
  • Download Monitor  – pro download souborů na webu
  • Duplicate Post – pro duplikaci obsahu, není nutné tedy věci opakovaně klikat vždy znovu
  • Easy Updates Manager – správa updatování WordPressu a pluginů, lze si nastavit podle požadavků
  • Fast Velocity Minify – slouží pro minifikaci css a js, nutné pro zvýšení výkonu webu
  • Flexi Pages Widget – widget, který zobrazuje stránky, které patří ve stromu k dané hierarchii
  • Forty Four – 404 Plugin for WordPress – zobrazuje vlastní grafiku a text při zobrazení stránky 404
  • GDPR Cookie Consent Banner – zobrazuje banner upozorňující na použití cookies
  • Google XML Sitemaps – vytváří xml mapu webu pro vyhledávače
  • Growmap Anti Spambot Plugin – ochrana před spamem na formuláři pro komentáře, již se dále nevyvíjí, upraveno svépomocí
  • Head Cleaner – vyčistí html hlavičky od zbytečných tagů, velmi dobré řešení. Nicméně se již dále nevyvíjí, bylo nutné jej upravit
  • Klasický editor – WordPress od verze 5 použivá nový editor Gutenberg. Obsah tvořím klasicky, nepotřebuji jej
  • Login LockDown – bezpečnostní opatření, kdy se roboti zkouší opakovaně hádat heslo do adminsitrace
  • Microkid’s Related Posts – výborné rozšíření, pomocí kterého vložité k obsahu další související články, nevyvíjí se, bylo nutné upravit
  • My Page Order – pro vlastní řazení stránek
  • NextGEN Gallery – vytváří galerie obrázků
  • Page Tagger – slouží k tagování stránek
  • Portfolio Post Type – pro vytvoření Portfolia v administraci
  • Redirection – slouží k přesměřování uvnitř webu, když dojde například k přesunu stránek, důležité pro SEO
  • Relevanssi – pro lepší vyhledávání
  • Simple Social Buttons – zobrazuje tlačítka pro sociální sítě
  • SyntaxHighlighter Evolved – zvýrazňuje a formátuje text pro různé programovací jazyky
  • WP Comment Policy Checkbox – souhlas se zpracováním osobních údajů pro formulář komentářů
  • WP GDPR Compliance – slouží pro přehled a správu osobních údajů zpracovávaných na webu
  • WP-PageNavi – pro lepší stránkování napříč webem
  • WPS Hide Login – lze uživatelsky nastavit url adresu pro přístup pro přihlášení do administrace, důležité pro bezpečnost webu
  • Zalomení – zalamuje text na webu podle pravidel českého jazyka

Jak je uvedeno u některých pluginů, již se dále nevyvíjí a kompatibilita s PHP 7.3 by bez zásahu nebyla možná. To se samozřejmě může stát kdykoliv s jakýmkoliv dalším ze seznamu, o který se tvůrce z nějakého důvodu přestane starat. Tady se přechod časově značně protáhl, protože bylo nutné řešit velké množství nekompatibilit s novou verzí jazyka.

 

Celková optimalizace webu, aby vše fungovalo korektně

Opět to může znít jako jednoduchý úkol, ale pokud použijete vetší množství modulů, může se stát a také se to děje, že se pluginy navzájem ovlivňují a některé přestanou fungovat, případně nefungují korektně. Zejména se to děje při zapínání minifikace css a js, kdy některé pluginy nefungují díky chybně načtenému javascriptovému kódu. Je pak nutné dělat různé optimalizace a hledat ty části kódu, které tyto chyby způsobují. Také se mi stalo, že mi přestal fungovat kontaktní formulář na mobilních zařízeních. Příčinou se ukázalo být vypnutí WP REST API, které tento formulář používal. Na PC formulář fungoval korektně. Je tedy nutné na toto pamatovat a být opatrný při dalších úpravách.

 

Několik slov na závěr

Přechod se nakonec podařil, ale časová investice byla značně vyšší, než jsem původně očekával. Ukázalo se, že zatímco při psaní vlastního webu na ForkCms bych si musel spoustu věcí vytvořit sám, tady jsem naopak musel řešit problémy spojené s tím, aby části hotového kódu, alespoň nějakým způsobem, spolu fungovaly jako jedna aplikace. Zdaleka největší problém však vidím v tom, že jakákoliv změna v aplikaci může způsobit znefunkčnění některé části webu a to bez toho, abych to jako správce webu vůbec zaznamenal. Web se sice tváří, že funguje, ale zmizí například widget, nějaká část textu vkládáná z pluginu ap. Před několika měsící mi zmizelo veškeré nastavení SEO na celém webu. Musel jsem modul přeinstalovat a provést nastavení znovu. Pokud tedy chcete stabilní web, není to dobré řešení, zvláště pak, máte-li zapnuty automatické aktualizace. V případě jejich vypnutí se ale zase vystavujete bezpečnostímu riziku, což také není ideální.

Na nepříliš kritické a jednoduché weby se stále jedná o dobré a celkem jednoduche řešení. Kvalita pluginů se mi subjektivně zdá, že trochu upadá a i po analýze zdrojových kódů je znát, že složitější pluginy již moc dostuné volně nejsou. Pak je nutné si připlatit, případně si věci řešit ve vlastní režii

Pokud jste dočetli článek až sem a myslíte to se svým projektem alespoň trochu vážně, chcete spolehlivost a otevřené možnosti vývoje v budoucnosti, nemáte již dále nad čím přemýšlet. WordPress má jasné limity a nezbývá, než se podívat po něčem robustnějším. Tady bych jednoznačně doporučil ForkCms, ale o něm si řekneme někdy příště.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *