Recenze školení Mistrovský vývoj webů na WordPressu od Jana Biena

Při tvorbě webů se primárně zaměřuju na Drupal, ale nevyhýbám se ani WordPressu. Jen jsem si celou dobu nebyl jist, jestli je WordPress skutečně taková šílenost, jak se mi jeví, nebo zda jsem jej pouze nepochopil. Vydal jsem se na školení Jana Biena pro odpovědi.

Reklama

Úvodník tohoto článku vám asi napoví, jaký je můj pohled na WordPress. Hodně kritický. Postavil jsem na něm řadu webů, vlastních i pro klienty. Se šablonami i s nakódováním dodané grafiky. Ale vždy si u toho trhám zbytky vlasů.

Jak je možné mít redakční systém, ve kterém jsou reklamy v administraci? Proč se oblasti pro widgety dodneška nazývají v kódu jako dynamic sidebar, přestože nemusejí být jen v postranním panelu? Proč je takový chaos v pojmenování funkcí v API WordPressu? Opravdu je tak hloupě řešeno zobrazování výpisu obsahu ve smyčce? Je tu fakt absolutně podivný koncept URL aliasů, kdy slugy pro taxonomii, typy obsahu a adresy obsahu vzájemně kolidují?

Měl jsem i méně kritické dotazy, které jsem si chtěl po nějakém školení zodpovědět. Používám správné cacheování? Je Toolset to správné řešení pro mé potřeby? Používám správně WP Query? Jak správně řešit rychlost frontendu s WordPressem, aby byl PageSpeed Insights spokojený?

Jedna rýpavá: a vlastně mě také zajímalo, zda na školení WordPressu chodí někdo jako zkušení vývojáři, nebo jen lidé, pro které je vrchol umění použití nějakého Page Builderu.

Byl jsem na několika školeních u Martina Michálka (vzhurudolu.cz) a když jsem si rezervoval termín na organizaci CSS, přiklepl jsem si i školení WordPressu. To nevede přímo Martin, ale Jan Bien, vystupující pod přezdívkou webmistr. No paráda, kdo jiný by měl mé dotazy na školení zodpovědět než webmistr.

Prostory a organizace kurzu

Všechny kurzy ze vzhurudolu.cz se odehrávají v Praze v Konferenčním centru GreenPoint. Dostat se tam z Brna vyžaduje ráno asi hodinovou rezervu, jinak je to ale dobře zvolené místo s pohodlným parkováním.

Dorazil jsem asi půlhodiny před začátkem. Pár účastníků už koukalo na místě do svých notebooků. Pozdravili jsme se s Honzou Bienem, já v rychlosti dohnal přípravu v podobě instalace jednoduchého webu s WordPressem, který Honza všem účastníkům školení s předstihem připravil.

Během celého kurzu bylo k dispozici občerstvení v podobě bábovky a brownies, káva, čaj, voda s citronem a džus. Oběd se podává přímo v konferenčním centru, na výběr byly dvě jídla a polévka. Pro jídlomilce upřesňuji, že šlo o rýži s masovými rolkami nebo americké brambory s kuřecími závitky a kuřecí polévku. Narazit tu ale můžete i na vařenou čočku nebo zelí. Speciální stravování jsou schopni organizátoři kurzu pořešit. Odpoledne dodaly energii chlebíčky.

Seznámení s účastníky školení

Na podobných školeních jsem vždy zvědav, jaká se sejde parta lidí. Martin Michálek měl nedávno zajímavý nápad. Vytvořil dvojice a nechal představovat každého svým protějškem. Velmi dobrý nápad, jak se seznámit, ale dovedu si představit, že pro některé introvertní ajťáky to musí být peklo.

Honza Bien zůstal u klasického představení sebe a pak nechal každého, ať poví pár slov o sobě a o motivaci, se kterou na kurz došel. Zajímaly ho rovněž dotazy, které bychom si tímto školením WordPressu rádi zodpověděli. S dotazem na nějaké API funkce, slugy a generování adres jsem si už od začátku přišel jako provokatér. Ostatní se ptali spíše na to, který plugin je dobrý na tu či onu věc. Hodně lidí zajímal Gutenberg.

Byla to zajímavá sestava. Zaznamenal jsem pár lidí, kteří byli před WordPress postaveni a chtěli zjistit, zda je to opravdu taková nekoncepční hrůza z pohledu kódu. Většinu tvořili kodéři, kteří sice neumějí programovat, ale zvládnout naklikat web na nějaké šabloně. Ty zajímaly především Page Buildery.

Zaujali mě lidé, kteří došli sbírat podklady k tomu, aby přemluvili svoje nadřízené k výměně Kentica či SharePointu za WordPress. První jmenovaný mi přijde jako prémiový produkt, nikoli jako souměřitelná alternativa s WordPressem. Co se SharePointu týče, ten se mi nikdy nelíbil, ale posoudit nedovedu.

Padaly rovněž dotazy, kdo používá jaký editor. Vedlo asi Visual Studio Code s Atomem. Já bych k němu přidal PhpStorm, který má vcelku dobrou podporu i pro WordPress. Zaujalo mě, když nějaké slečny tvrdily, že jejich hlavním editorem je Word, případně používají Poznámkový blok, ve „kterém se stylopis dá docela dobře psát a editovat“. OK.

S touhle nesourodou partou asi patnácti lidí se Jan Bien pustil do objevování světa WordPressu. Už to mi přijde jako výkon. Když školím Drupal nebo Symfony, zažívám nejhorší chvíle právě tehdy, když se sejde takto nesourodá parta webařů, co se jejich znalostí týče. Naštěstí je moje publikum většinou na stejné úrovni.

Obsah školení Mistrovského vývoje webů na WordPressu

Osnova kurzu slibovala seznámení se základními principy WordPressu, implementaci vlastního designu, výběr zajímavých pluginů, povídání o výkonu, bezpečnosti a několik pokročilých tipů na závěr.

Začali jsme seznámením se s post types, příspěvky a stránkami. Povídali jsme si o hierarchii, taxonomiích a uživatelských polích. Honza v rychlosti zmínil příslušné funkce pro definici vlastních typů obsahu a taxonomie v kódu.

Po pravdě řečeno, z upoutávky na školení (základní principy, implementace designu, tipy na pluginy) mi vyplývalo, že to bude spíše začátečnické. Honza Bien ale ve snaze vychrlit co nejvíce informací, trochu lavíroval mezi začátečnickými věcmi ve formě instalace pluginů (zde Advanced Custom Fields), ze které najednou přeskakoval do psaní kódu bez nějakého většího vysvětlení.

Nevšiml jsem si, kolik lidí zvládalo a kolik bylo těch, kteří praktická cvičení vynechávali. Neměl jsem s ničím problém, ale bylo dost nepříjemné, že z kusého zadání jsme najednou měli vychrlit kód. Resp. toto jsem si myslel. Dostali jsme zadání vytvořit vlastní typ obsahu s konkrétními políčky.

Honza totiž zmiňoval možnost definice vlastních obsahových typů ve functions.php, ale při cvičení očekával, že toto naklikáme. Zřejmě jsem nedával pozor a pustil se naopak do kódování. Bylo to rychlejší než v ACF, které jsem doteď neviděl a měl se v něm během minuty zorientovat. Jinak bych nestíhal.

Poznámka: Přijde mi značně nešikovné, že pokud si připravím vlastní typ obsahu s políčky v kódu, tak se mi to nepromítne do Advanced Custom Fields automaticky a musím totéž znovu naklikat. Nakonec jsem tedy původní příklad udělal dvakrát.

Dále jsme se věnovali widgetům a já si bohužel potvrdil své podezření. Kvůli zpětné kompatibilitě je WordPress zabordelený nekoncepčním kódem s nesmyslnými názvy funkcí. Viz můj oblíbený příklad s register_sidebar() a dynamic_sidebar(), přestože se s jejich pomocí nedefinují jenom postranní panely.

Letem světem jsme proletěli registraci a vykreslení navigačního menu. Mnohem zajímavější pro mě byla část věnovaná hookům. Ve WordPressu máme dvojí – akce a filtry. Zde Honza zpomalil, problematice se věnoval podle mě dostatečně, včetně příkladů praktického využití. Díky tomu jsem si ujasnil, jak tyto věci ve WordPressu vlastně fungují, jak se dají odebírat, jak je to s nastavováním jejich priority.

Podobně jsme probírali shortkódy, jejich použití a definování. Dostali jsme také příklad pro samostatné cvičení, během kterého jsme připravili jeden vlastní shortkód. Chybělo mi zde zase nějaké upřesnění, jako třeba promítnutí stránky s definicí příslušné funkce. Nemám moc rád takové zběsilé programování, na druhou stranu jsem díky PhpStorm a jeho nápovědě nebyl poslední i bez googlování dokumentace.

Opět v rychlosti následovaly zmínky o napojování vlastních CSS a JavaScriptu, včetně vestavěných knihoven. A po nich problematika, kterou jsem naštěstí ve WordPressu zatím řešit nemusel. Ale zjistil jsem, že použití AJAXu je relativně snadné. Máme dvě funkce pro přihlášeného a nepřihlášeného uživatele, nadefinujeme je a voláme oproti admin-ajax.php. Jak prosté.

Docela velká část školení WordPressu byla věnována konceptu The Loop, tedy smyčce pro procházení seznamu příspěvků, a práci s WP Query. Co jsem jako wordpressový samouk netušil, je nutnost vracet voláním jedné funkce ukazatel ze sekundárního dotazu v rámci WP Query zpět do nadřízeného. Fakt divný koncept, do kterého se vývojář snadno zamotá.

Tipy na pluginy nechyběly

Část po obědě byla spíše ve znamení pluginů a tipů, jak něco ve WordPressu udělat. Opět jsem si potvrdil svou domněnku, že ve světě WordPressu není nic dané. Drupal má například API na formuláře, takže většina modulů s nimi pracujících je navzájem kompatibilní, mohu do nich pohodlně sahat i z tématu vzhledu. Ve WordPressu existuje sto a jeden plugin na totéž, formuláře nevyjímaje. A každý to řeší po svém. To je šílenost.

Povídali jsme si o PageBuilderech. Honza Bien zmínil, které mu připadají fajn. Vynechat jsme nemohli samozřejmě Gutenberg. U tipů na řešení vícejazyčného webu mě potěšilo, že to vidím stejně. Polylang nebo WPML, nic jiného nemá smysl. Ještě padla zmínka o užitečném pluginu Loco Translate.

Trochu jsme se věnovali obrázkům, kde jsem zjistil další nevýhodu WordPressu, o které jsem dosud neměl tušení. Při nahrávání obrázku ihned vytváří všechny jeho varianty v příslušných velikostech, přestože se v nich daná fotka na webu ani nikdy nepoužije. Chudák úložiště.

V rychlosti jsme prošli práci s uživateli, rolemi a právy, Honza zmínil plugin Members. Zeptal jsem se, jestli by hodil do placu pár tipů, jak s WordPressem zvládnout komunitní web, nebo něco podobného, kde je potřebná registrace uživatelů. A třeba jednoduchý profil. Vím, že na něco podobného není WordPress to nejlepší řešení, ale konec konců i obyčejný magazín někdy může chtít povolit komentáře jen pro registrované čtenáře. Párkrát jsem to dělal.

Očekával jsem nějaké správné postupy nebo tipy, ale Honza, vlastně fanoušek WordPressu mě realisticky vrátil na zem: takové weby prý nemá smysl na WordPressu ani začít stavět. V zásadě souhlasím, ale přesto bych čekal nějakou lepší odpověď. Ten příklad s magazínem a registrovanými čtenáři mi přijde poměrně typický. Vždyť WordPress je právě pro takové obsahové weby. Je možné, že v nedostatku času mě možná Honza Bien nepochopil a myslel, že mluvím o něčem na způsob seznamky.

Poznámka: Na druhou stranu si Honzy Biena vážím za to, že to není takový ten militantní fanoušek WordPressu, kterého je možné potkat na různých WordCampech. Netvrdí, že na WP je možné udělat cokoli a má střízlivý přístup.

Čím blíže jsme byli ke konci školení, tím více se témata náhodně střídala. Honza ukazoval databázi, do jejíhož popisu se nějak zamotal. Nepodezírám jej z toho, že by její struktuře vůbec nerozuměl, spíše ji ale měl vynechat ve prospěch jiných částí kurzu. Potom jsme přeskočili na nastavení v souboru wp-config.php, od něj k verzování (VersionPress zatím nevidí jako vhodný na produkci), cronu a REST API.

Překvapilo mě, že na rozdíl od Drupalu WordPress nemá v adrese pro ruční spuštění cronu unikátní hash. Proti přetěžování webu voláním cronu se brání tím, že má systém zámků zabraňujících opakovanému spuštění náročných úloh, které ještě nedoběhly. Nevím, nevím. Toto měl Drupal před zavedením hashe, myslím, také. A přesto has zavedl.

O REST API ve WordPressu jsem nevěděl. Škoda, že nezbyl čas na nějakou praktickou ukázku použití. Velice rychle jsme pak probrali ještě WP CLI, tedy WordPress na příkazovém řádku, a Composer se začleněním WordPressu do jiných projektů.

Citelně mi chybělo delší povídání o rychlosti WordPressu. Přestože bylo v osnově. Kvůli nedostatku času se odbylo vlastně jenom tipem na cacheovací pluginy. S doplňující informací, že docílit výborného hodnocení v PageSpeed Insights s WordPressem nejde, leda by jej člověk měl zcela pod kontrolou a nesahal do něj klient.

Čekal jsem něco víc a tipy z praxe. Zvláště, když na dalších kurzech ze Vzhůru Dolů se právě rychlost webu intenzivně řeší. Nedávno jsem třeba přemýšlel, jestli je správný postup vypnout všechny styly od pluginů nebo jen natvrdo napojit vlastní CSS. Nebo jak to ve WP vlastně dělají profíci. Nebo je WP řešení jen pro levné weby, kde není prostor se optimalizacemi zabývat?

Pro koho se kurz vyplatí?

Trošku jsem získal pocit, že se kurz odchýlil od plánované osnovy. Jistě, utvrdil jsem si v něm některé své názory (bohužel hlavně ty negativní), něco jsem si zopakoval, ale dozvěděl se i spoustu nových tipů ze všech oblastí WordPressu. Řadu věcí budu muset prozkoumat sám. Na věci, které mě zaujaly nejvíce, nebyl ve školení dostatek prostoru.

A právě čas a počet informací jsou zřejmě největší slabinou Honzova školení WordPressu. Na rozdíl od něj bych informace v kurzu neustále nevyjadřoval počtem slajdů, které neříkají nic o tom, kolika problémů se chce dotknout. Ale rozhodně bych kurz prostříhal.

Postrádám zde nějakou pevnější koncepci. Celé to bylo totiž takové… Takové WordPressové. Mělo to být pro začátečníky ve formě rekapitulace s naučením správných postupů, jak trochu evokuje název školení? (ale pochopil jsem, že ve světě WP žádné best practices asi neexistují)

Pokud ano, pak jsme měli probrat už instalaci, wp-config.php hned na začátku a třeba doplnit i tipy, co dopsat do .htaccess. Komprese, mezipaměť atd. Neměli jsme se hrabat v kódu, ale vše řešit jen a pouze pluginy.

Mělo to být spíše pro pokročilé? Pak bych vyhodil Page Buildery a více se věnoval třeba REST API, praktické ukázce AJAXu či rozdílům mezi functions.php a pluginy.

Takto to byla všehochuť, ze které si předpokládám vzal něco úplně každý, kdo kurz navštívil, ale vlastně nedovedu ani s odstupem a zamyšlením říci, pro koho přesně je tento kurz určen. Výrazně zrychlující se tempo bylo ke konci nepříjemné. Myslím, že méně je více a Honza Bien to určitě tuší.

Je Honza Bien opravdu webmistr?

V nějakém rozhovoru s Honzou Bienem jsem zaznamenal, že se svou přezdívkou webmistr není úplně spokojen, protože zní namachrovaně. Těžko hodnotit, minimálně pro svoje publikum webovým mistrem určitě bude. Vždyť stavěl na WordPressu i weby pro Seznam.cz, což mi přijde jako dobrá meta v dané oblasti.

Setkal jsem se s ním poprvé a přijde mi, že WordPressu rozhodně rozumí. Není programátor v tom pravém slova smyslu, ale to asi ani nikdo z lidí, kteří na školení byli, nečeká. Znalosti o WordPressu předat dovede, má dobrý přehled o dění v komunitě.

Ne vše bohužel zodpověděl, ale to je dáno také tím, o čem se bavíme. WordPress není dokonalý, na většinu věcí nemá správné řešení, a tak připravit v něm něco komplikovanějšího je vlastně alchymie.

Kdybych měl něco doporučit, tak to bude větší oční kontakt s publikem namísto koukání se na plátno. Správná výslovnost základních pojmů jako function nebo main. Výslovnost stylem čtu, co vidím, mi dost trhala uši.

Kurzu by především prospěla výrazná redukce informací a Honza by pak působil jako větší odborník. Méně je v tomto případě více. Anebo zcela předělat koncept jen na výčet zajímavých pluginů z různých oblastí.

Shrnuto a podtrženo, ztracený den to nebyl. Pokud si chcete ověřit své znalosti získané jen z online zdrojů a případně získat několik málo dalších tipů, pak na školení Mistrovský vývoj webů na WordPressu zajděte.

Jako trochu zkušený tvůrce webů na WordPressu zde získáte tipy na zajímavé pluginy, které vám usnadní život a nebudete muset zaplevelovat své weby testováním spousty rozšíření poskytujících podobnou funkcionalitu.

Pro pokročilejší webaře bude zajímavé utřídění si informací o dědičnosti obsahových šablon, systému hooků s filtry a akcemi a třeba zmínka o AJAXu. A třeba dostane více prostoru i povídání o rychlosti webu.

Reklama

Komentáře

Dobrý den, sem tam sem zavítám a bavím se "hejty" na WordPress, který používám na všechny zakázky a nedám na něj dopustit :-) Ale pohled z druhé strany je super, a není marné si připomenout, že některé podivnosti, se kterými jsem se už dávno naučil žít, jsou pro jiného člověka naprosto šokující ( wp_reset_query(), 10 velikostních variant jednoho obrázku,... ).

Proč ale píšu tento komentář - zmíněný plugin Advacend Custom Fields (ideálně PRO) je pro mě osobně naprosto klíčový, ten povýší možnosti WP webu na další level. Cokoli si klient vymyslí, že by chtěl mít na webu editovatelné, tomu lze velice snadno vytvořit příjemné "GUI". Většinou tedy postupuji tak, že ve functions.php jen definuji patřičný custom post type, a v adminu přes ACF mu nastavím kompletní volitelná pole. Definovat tato pole přes PHP funkce v kódu mě popravdě za ty roky ještě nenapadlo :-)

Toť jen taková troška do mlýna ...

No nejsem úplně ten z druhé strany. Např. nemám rád, když na setkání lidí od WordPressu nevidí jedinou dobrou věc na WP (přitom jeho UI by Drupal mohl kolikrát závidět, jak píšu v jiných článcích). A na setkání WP lidí se zase nadává na to, jaké sračky jsou Drupal a Joomla. Takto to neberu. Vše má své místo.

Nehledě na to, je ale řada věcí ve WP kvůli zpětné kompatibilitě prostě hrozná :) To není hejt, to je popis skutečnosti. Tak, jako s klidem přiznám nedostatky v mém milovaném Drupalu.

Ono záleží hodně na tom, jaké weby člověk staví. Může totiž platit, že se WP či cokoli jiného hodí na všechny jeho zakázky, stejně jako by mohlo platit, že prostě není použitelný pro žádnou z nich.

K ACF - jo, Honza Bien v rychlosti ukazoval rozdíly mezi tím, když se pole nadefinuje v kódu a tím, jak pak vypadá po naklikání v ACF. Já hlavně z historických důvodů používám Toolset, tedy alternativu/konkurenci k ACF. Přátelé většinou také jedou na ACF, hlavně tedy na jeho bezplatné verzi.

Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.

existuje este jeden celkom slusny plugin a hovori sa o nom, ze je lepsi ako ACF. Ide o https://metabox.io/
Priznam sa, zatial som ho nepouzival ale cital som o nom clanky a recenzie.

Napsal jsi to velice čtivě a zajímavě. Radost číst.

Přidat komentář