Martin Michálek Martin Michálek  – 12. 6. 2017

Honza je machr přes WordPress. A já zase svý způsobem hejtr tohodle redakčního systému. Co se stane, když se machr a hejtr potkají a natočí podcast? No přesně to, co si teď můžete pustit nebo přečíst.

Uznávám, že i když pro WordPress ve své práci nemám užití, po rozhovoru s Honzou se mezi hejtry přestávám počítat. Poslechtěte si, jak k tomu došlo.

Honza Bien

Obsah

  • Proč Honza vůbec WordPress používá? (text)
  • Je WordPress pořád jen blogovátko? (text)
  • WordPress versus Drupal z pohledu návrhu databáze (text)
  • Jaké pluginy Honza používá a jak je vybírá? (text)
  • Jak řešit aktualizace? Dají se nějak zautomatizovat? (text)
  • Není lepší klienty obsluhovat z jednoho online CMS? (text)
  • WordPress a frontend: Nedělá se s ním špatně? (text)

Textový přepis

Martin Michálek: Dobrý den, posloucháte podcast ze Vzhůrudolů.cz, ve kterém si povídám se zajímavými lidmi kolem webdesignu. Od mikrofonu zdraví Martin Michálek. Dnes se podíváme na zoubek WordPressu. Dovolte mi tady přivítat Honzu Biena – webmistra, frontendistu a zasloužilého wordpressistu na volné noze. Ahoj Honzo!

Jan Bien: Ahoj Martine! Díky za pozvání, zdravím všechny posluchače!

MM: Honzo, nejdřív nám prosím tě řekni něco o sobě (co teď děláš, čím se zabýváš) …

JB: Já teď kouzlím s WordPressem – zrovna chystám jisté školení v rámci WordPressu, takže pronikám do jeho tajů stále hlouběji a hlouběji…

MM: Děláš – pokud se nepletu – statické prezentační weby…

JB: Jsem webmaster na volné noze už 7 let. Stavím weby na WordPressu pro malé a střední firmy. Občas radím firmám, jestli je dobrým nápadem zakomponovat WordPress do nějakého jejich projektu.

Proč Honza vůbec WordPress používá?

MM: Já se, přátelé, budu během podcastu zase tvářit, s prominutím, jako poloviční blbec a budu klást i takové otázky… Nejprve vysvětlím svůj vztah k WordPressu: Někdy před 5 – 7 lety jsem si ho jednou zkusil – a od té doby jsem se zařadil do kategorie „hater WordPressu”. Občas, když jsme se s Honzou viděli na nějakých akcích, tak jsem si z něj dělal srandu, jestli ještě pořád „tu věc“ používá, a postupně mi Honza vysvětloval, jak to vlastně funguje ve WordPress komunitě a jak to funguje s WordPressem dneska, a časem jsem mírně změnil názor. Ne, že bych dneska WordPress na něco používal – nejsem úplně coder, co dělá klientské zakázky, ale díky Honzovi mám jakýs takýs přehled a naději, že WordPress se dá používat na weby dost zajímavým způsobem. Pro potřeby tohoto podcastu se budu tvářit jako někdo, kdo je pořád ještě ten hater… Honzo, co tě vedlo k tomu, abys začal dělat weby na WordPressu?

JB: Ty jsi řekl, že jsi WordPress vyzkoušel před 5 – 7 lety, já ho vyzkoušel před sedmi lety (v r. 2010). Do té doby jsem byl klasický frontendista, který kódoval weby a který, když měl udělat nějakou konečnou zakázku pro klienta, ještě potřeboval nějakého programátora – a vždycky mi to vadilo, že se musím s někým sehrávat, protože rád pracuji sám. Tak jsem hledal redakční systém, nainstaloval jsem si WordPress a udělal jsem si na něj úplně stejný názor jako ty po prvním vyzkoušení. Protože jsem potřeboval něco jako submenu, tak jsem si nainstaloval nějaký plugin submenu – a ten plugin do toho vylil úplně zhůvěřile HTML – a řekl jsem si, že nebudu používat redakční systém, který by takto shazoval mou práci. A pak jsem si udělal takové kolečko po dalších redakčních systémech, jako byl Drupal, Typolight – německý redakční systém, GetSimple, Perch, který teď používáš, a po tomto několikaměsíčním kolečku jsem se vrátil k WordPressu. Rozhodl jsem se tehdy pro něj vlastně z jediného důvodu – a to proto, že to byl jediný redakční systém, u kterého jsem měl odvahu do něj pustit klienta, a řekl jsem si, že se naučím ten redakční systém používat tak, aby ta práce měla dobrý výstup.

MM: Takže tě zaujalo, jak se používá ta redakční část?

JB: Já jsem se rozhodl čistě z toho důvodu, že to je redakční systém, do něhož jsem ochoten pustit klienta, a vím, že mi bude nejmíň volat v rámci těch všech redakčních systémů – a to byl můj hlavní motiv. Ale názor na WordPress jsem měl takový, že jeho použití na první plán dělalo hrozný výsledek…

MM: A proč ne třeba Drupal? Když jsem zkoušel jednu dobu jak WordPress, tak Drupal, tak oba dva mi přišly pro frontenďáka poměrně strašné, Drupal asi mírně víc, ale jenom mírně – co se týká přívětivosti toho uživatelského rozhraní. Jako hater WordPressu jsem velice znepokojen tím, že někdo říká, že WordPress má příjemné uživatelské rozhraní.

JB: Pro mě měl tehdy Drupal horší uživatelské rozhraní. Teď vůbec nevím, jak vypadá Drupal. Nebyl jsem schopen k němu proniknout – zdál se mně složitější.

MM: Když to shrnu – tví klienti, kteří dělají s WordPressem (a sami se v tomto redakčním systému zorientují) nejsou počítačovými lidmi, ale běžnými uživateli.

JB: Ano.

Je WordPress pořád jen blogovátko?

MM: Když už jsme načali ten Drupal, tak mně napadá ještě jedna věc, co mi v té době hrozně na WordPressu vadila, a to je to, že v té době z toho WordPressu bylo hrozně moc vidět, že to je blogovátko – že to je věc, která je určená na tvorbu blog postů, k nějakým těm komentářům – „a pak už raději od toho rychle pryč”… Ještě dodneška si pamatuji ten okamžik, kdy jsem se podíval do databáze WordPressu, když jsem tam zkoušel dělat některé věci, které nebyly blog – a všechno se to ukládalo hrozně divně a točilo se to zase kolem toho blogu. Jak je to dneska?

JB: Já myslím, že databáze vypadá pořád stejně. Před těmi 7 lety to byla verze WordPressu 2.9.3 – v té době jsem do toho vstupoval – a to byla doba, kdy WordPress přestával být blogovátkem – ale ještě jím byl… (Dodneška máš funkci, která ti vypíše název webu a která se jmenuje bloginfo name – je to funkce, která je tam stařičká, tj. která je tam strašně dlouho). Ale v tehdejší době se začal měnit v CMS-ko, přibyl ve WordPressu takzvaný custom post type, což je vlastní typ obsahu (v rámci WordPressu standardně ty „hraješ, že o tom nic nevíš”, ale asi víš, že jsou tam nějaké posty a nějaké pages). A tehdy nám vývojářům dal WordPress infrastrukturu k tomu, abychom si mohli přidávat vlastní custom post typy, a začala ta doba, kdy se z toho začalo stávat univerzální CMS-ko, kterým lze spravovat různé typy obsahu.

MM: Ale není to trošku Potěmkinova vesnice? Když říkáš, že se to ukládá pořád stejně, což mě děsí, a navenek se to tváří, že to umí docela v pohodě obsloužit jakoukoliv datovou strukturu, kterou si tam vložíš – takže když někdo chce třeba nějaká jednoduchý e-shop, tak předpokládám, že to bude jednoduché, a když chce někdo udělat stránku, dejme tomu, festivalu, zase si tam naskládá ta data tak, aby to odpovídalo – není to Potěmkinova vesnice? Nebrzdí to?

JB: Co je to Potěmkinova vesnice? (smích)

MM: To znamená, že je to naoko v tom redakčním systému – pro toho klienta to vypadá tak, že to umí tyto pokročilejší struktury – ale WordPress ve své hloubce, pokud se bavíme o té databázi, je naprogramovaný tak, že je to pořád to blogovátko a ukládá se to tam tak nějak divně… Někde to přece musí mezi těmi dvěma pohledy jiskřit…

WordPress versus Drupal z pohledu návrhu databáze

JB: Ano – míříme k tomu, že ta standardní struktura toho obsahu té databáze je nějaký titulek, nějaký obsah toho jednoho článku nebo jedné stránky, nějaké datum publikování, pořadí v menu, autor (několik takových položek), ale my potřebujeme dělat nějaké struktury, které jsou jiné… U pořádání nějakých akcí potřebuji mít sloupeček, kdy se ta akce koná nebo kde se koná – a to už tam standardně není, a WordPress tohle to řeší přes meta keys, přes tabulku metainformací, kde jsou tři sloupečky – ID článků, ID toho custom sloupečku a hodnota. O tom, jestli je to dobré nebo špatné, se hodně diskutuje – hodně lidí to kritizuje, protože pak je ten dotaz do té databáze složitý (není to jeden select do jedné tabulky, ale je to nějaký join ze dvou tabulek).

MM: Dostali jsme se k tomu přes ten Drupal, kde já si dobře pamatuji, že v té době byla nějaká základní jednotka node, která byla silně abstraktní, a díky tomu šly ty věci do sebe skládat efektivněji.

JB: Mně přijde ta filozofie toho node geniální, protože v podstatě celý web je složený z nějakých komponent a nějakých výpisů. Výpis kategorií, výpis článků je přece v principu jedna a tatáž věc, což u toho WordPressu zase taky tak úplně není, protože taxonomie obecně jsou jiná tabulka než posty.

MM: Takže asi se shodneme, že z toho laického pohledu byl návrh toho Drupalu o krok dál. Pokud se nepletu, tak Drupal přišel asi později než WordPress, protože v době, kdy jsem zkoušel WordPress, tak končila ta velká blogovací éra – to ještě nebyl Facebook a všichni psali blogy – internet vypadal, že jsou to skoro jenom blogy – a to skvěle řešil WordPress, a ve chvíli, kdy začalo být potřeba něco univerzálnějšího, tak přišel ten Drupal (možná, že to bude trošku časově trošku jinak) – a díky tomu to měl ten Drupal lépe promyšlené. Nicméně stalo se to, že když jsme připravovali to školení, tak ty jsi mi říkal, že WordPress roste daleko rychleji než Drupal. Když jsem se koukal na statistiky, tak jsem zjistil, že třetina internetu běží na WordPressu (je to obrovské množství webů), Drupal nebude tak silný – i když je to určitě na spoustu věcí vhodnější nástroj… Ale zaujalo mě, že je tady kontrast mezi uživatelským pohodlím a silou toho ekosystému a tím technickým řešením, které třeba není tak vyspělé – a stejně to jde dopředu, díky tomu, že to má asi zase trošku jiné výhody, než je zrovna ta databáze.

JB: Mně – jako někomu, kdo dělá obsahové weby – je docela jedno, jak ta databáze vypadá. Ano, ten dotaz do té databáze bude trvat déle, to je pravda, ale pro ten typ webu, který dělám, si tam nastavím nějaké cachování – a není to ta featura, na které ten redakční systém odepíšu.

Jaké pluginy Honza používá a jak je vybírá?

MM: My jsme si povídali před tímto podcastem o tom, že ty ten WordPress používáš s radostí – a je to díky tomu, že sis na tom vyladil nějaké své vlastní workflow a nějaké své vlastní nástroje a že ten nástroj už ti neklade překážky. Takže když třeba narazíš na problém s rychlostí, tak máš na to, nechci říct, že plugin, ale vyřešíš to – a to je důležité. Můžeš vyjmenovat nějaké pluginy, které používáš?

JB: Určitě používám nějaký cachovací plugin (když už jsme tady nakousli ten výkon) – to znamená cachovací na straně serveru. Aby každé to servírování stránky nebylo sestavování PHP, tak já používám WP Super Cache (a je jich ještě několik dalších). Používám plugin pro zvýšení zabezpečení, to znamená ochranu proti brute force útokům… Používám nějaké debuggovací pluginy pro to, když něco ladím a potřebuji dohledat, kde se mi něco mění… Taky používám Advanced Custom Fields – to je úplně nerozšířenější, nejčastěji používaný plugin pro custom meta fieldy (tím si vytváříš tu vlastní strukturu, ty nody, které mají položky, které potřebuješ vyplňovat v tom redakčním systému).

MM: Není pro tebe dost náročné sledovat ten ekosystém? Protože na cachování budou pluginů možná stovky, na bezpečnost taky… Není pro tebe dost pracné se v tom orientovat? Já jsem si minule povídal s Riki Fridrichem o javascriptovém ekosystému, který je úplně šílený a jde hrozně rychle dopředu… Předpokládám, že tady to tak rychle dopředu nepůjde, ale stejně tě to nějaký čas stojí…

JB: Není v moci jednoho člověka znát úplně všechno, co jde z WordPress platformy (když WordPress vezmeme jako platformu) stáhnout a nainstalovat. Je spousta pluginů na bezpečnost, na cachování – na spoustu úkolů… Ty pluginy se někde vzájemně překrývají, takže když člověk vybírá nějaký plugin, tak o něm přemýšlí s nějakým přesahem, a to ve smyslu, co všechno mi ten který plugin řeší (řeší mi bezpečnost, řeší mi i kus nějakého zálohování) … Já sleduji, jaké pluginy vznikají, hodně jich je podle stejného vzoru, ale ve výsledku jde o to, dělat nějaké výsledky, což znamená si nějaký vybrat, zkombinovat si ho s těmi ostatními a vědět, že tyhle pluginy nejsou vzájemně v konfliktu – a pak to funguje.

MM: Takže máš nějakou sadu… Měníš to nějak často? – Každý projekt začíná s nějakými novými pluginy?

JB: Já si hrozně rád hraji, hrozně rád zkouším všechno možné a strávím na tom někdy až nechutně času (dokud mám peníze na účtu, tak si hraji a nepřijímám zakázky). Ale ve výsledku, když mám odvést nějakou práci, tak vím, že každou chybu, kterou udělám, když to na ten web dám, si uvědomím třeba za rok (protože za rok někde něco zaktualizuji a ono to přestane fungovat). Takže se snažím, aby všechny moje weby měly úplně stejný základ, abych věděl, že když se někde něco časem rozbije, tak budu vědět, na kterých dalších webech je stejný problém… (Když bych všude používal něco jiného, tak budu strašně často řešit – s ohledem budoucna – to, že tady k něčemu došlo). Každopádně, když vybírám plugin, který zařadím do toho svého workflow, tak teď mi už trvá několik týdnů nebo měsíců, než ho vůbec zařadím. – Dlouho ho testuji, sleduji, jak funguje autor na diskuzi, jaký on má vztah k tomu pluginu, jaký je vlastně genetický kód toho pluginu, tj. s čím vznikl, jestli vznikl k řešení nějakého problému nebo jestli vznikl s tím, že chce autor toho pluginu vydělávat peníze… (Tady se postupně můžeme dostat k zajímavému tématu, že celá WordPress platforma je krásná platforma na vydělávání peněz pro někoho, kdo do ní něco vyrábí – nějaký plugin, nějakou šablonu.)

MM: Takže by se dalo říct, že máš k tomu takový konzervativnější postoj, tj. že sice zkoušíš nové věci, ale než to zařadíš na ty své projekty, tak to chvilku trvá…

JB: Já opravdu hrozně rád zkouším. Nejsem konzervativec v tom, co je nové… Já to hrozně rád sleduju – spousta věcí mi přijde skvělých (určitě se dostaneme třeba k VersionPressu, který mi přijde skvělý). Ale když to mám odevzdat v klientské práci, za kterou ponesu odpovědnost, tak to jsem daleko přísnější z čistě praktických důvodů – chci mít klidné spaní…

MM: Tak to máme stejně. Člověk může/musí zkoušet nové věci, ale neznamená to, že každý projekt musíš dělat úplně s jiným pracovním postupem, s jinými nástroji, s jiným workflow. Taky proto já třeba ještě používám ten Grunt…

JB: Já taky používám Grunt.

MM: Alternativy mně totiž nenabízejí zas tak zásadní plus.

Jak řešit aktualizace? Dají se nějak zautomatizovat?

MM: My jsme trošku naťukli další zajímavé téma, a to jsou aktualizace. Ty máš docela dost klientů – minimálně vyšší desítky webů jsi udělal za tu dobu a ještě pořád je máš trošku na starost. Vždycky mě zajímalo, jak to funguje, když se o ty weby ještě zpětně staráš. Jednak oni ti zastarávají, musíš aktualizovat WordPress, pak se tam občas mohou stát nějaké průšvihy, co se týká bezpečnosti atd. Dá se to nějak zautomatizovat? – Jak to máš vyřešené?

JB: Nemám to vůbec vyřešené jednotně (nechci tady přilákávat útoky na weby mých klientů), ale jedna věc je aktualizace WordPressu, která dnes už funguje sama. Když si nainstaluješ WordPress, tak v nějaké řadě (teď je řada 4.7) se ti to třetí číslo aktualizuje samo – a to jsou ty bezpečnostní aktualizace. – Co se týká WordPressu, tak ten je samoaktualizační a je to bezpečné. Problém jsou pluginy. Pluginy jsou z nějakého jiného zdroje – a ten může obsahovat bezpečnostní chyby, tj. pak je potřeba to aktualizovat. Jsou nástroje na aktualizaci všech WordPressů z jednoho místa.

MM: Všech tvých WordPressů… (?)

JB: Přesně tak. Nainstaluješ si nějaký plugin a z jednoho místa můžeš aktualizovat všechny WordPressy. Vidíš, že vyšla nová verze a u všech můžeš aktualizovat plugin a podobně. A to je dobré zkombinovat s nějakým monitoringem dostupnosti, protože když to zaktualizuješ, tak v nějakém krajním případě se může stát, že se něco rozbije – a ty to potřebuješ vědět… Někdy při té aktualizaci může dojít k chybě (ale dochází k tomu málokdy). Když mám web, u kterého průběžně dělám nějaký drobný vývoj – nějaké úpravy – tak to pak dělám ručně společně s těmi svými úpravami.

MM: Existuje nějaký nástroj, který by tyto věci zautomatizoval? Protože pokud se nepletu, tak ty máš spoustu webů svých klientů nastavených úplně stejně – používají stejné pluginy, tj. je to jeden materiál. Takže jsou to různé instance toho samého WordPressu na různých webech, které mají různý obsah, různý design.

JB: Ano.

MM: Není tam nějaký potenciál udělat si vlastní online CMS-ko – vlastní webové CMS-ko – nebo něco jako jeden WordPress na všechny ty weby?

JB: To je to, co říkám. To jsou ty nástroje WP Remote (to je něco, čím spravuješ aktualizace všech těch webů). Je to jedna aplikace, která se jmenuje MainWP – a je to WordPress, ze kterého spravuješ všechny WordPressy, se kterými si ho propojíš. WP Remote a ManageWP jsou služby, u nichž z jednoho místa spravuješ všechny instance.

Není lepší klienty obsluhovat z jednoho online CMS?

MM: Správa z jednoho místa – to chápu. Pokud se nepletu, tak Wordpress.com je vlastně normální online CMS-ko – a není to třeba do budoucna cesta pro lidi, jako jsi ty – jak mít své klienty?

JB: Na svém hostingu, kde to je jedna instalace WordPressu? No, zní to hezky, ale pro mě jako freelancera je to hodně svazující, protože já tomu klientovi v tu chvíli dodávám hostingové služby – a já jako freelancer nejsem schopen dostát nějaké kvality hostingových služeb, která je běžná (a kde je 24/7 dostupnost podpory). Já si myslím, že hosting je věc firmy. A jestliže já budu hostovat klientův web nějakým svým WordPress multisite řešením, tak prostě poskytuji hosting a musím se podle toho nastavit – a to nikdy nechci. Chci, aby hosting byl na klienta. Já mu poskytnu služby aktualizací, služby nějakého dohledu, které mi zaplatí, ale on je úplně svobodný v tom, jestli je bude odebírat ode mě anebo jestli si za půl roku řekne, že chce někoho jiného nebo že se o to postará sám. Nechává mi to daleko větší svobodu. Jako freelencer se nemůžu takto svazovat.

WordPress a frontend: Nedělá se s ním frontendistům špatně?

MM: Další věc, která mě hodně zajímá (a také začnu předsudkem, který dneska mám vůči WordPressu) je práce s custom designem z pohledu frontenďáka. Když jsem si chtěl udělat vlastní design, tak si pamatuji, že mě WordPress dost věcí nutil dělat jinak, než jsem si představoval (dneska máš třeba workflow s Gruntem, máš preprocessory, chceš třeba spojovat, minifikovat a spoustu dalších věcí). Na frontendu je dost velká možnost kreativní práce – a mně přišlo, že ten WordPress tomu vůbec nejde naproti. Jak je to dneska?

JB: Naproti tomu úplně nejde… Ale když chceš vyvíjet šablonu, téma pro WordPress, tak klidně můžeš použít i Grunt – v tom tě nijak neomezuje, můžeš používat své workflow (já ho také používám), stejně tak minifikaci, spojování do jednoho souboru a podobně. To, co je trochu horší, je ten HTML kód, který WordPress generuje – a ten HTML kód jde přizpůsobit. Já na tom školení budu jako příklad – kus dne budeme společně vyvíjet web na Bootstrapu – na Bootstrapu proto, abychom museli přijmout to HTML, které máme dané – abych ukázal, že to jde, ale abych taky ukázal, že někdy to trochu bolí a že to jde jenom díky tomu, že už znám WordPress dost do hloubky, abych věděl, že to dovedu ohookovat. Ale já volím takovou variantu, že nějaký HTML kód si produkuji – nějaký layout celé stránky nebo podobně – ale nějaký HTML kód styluji ten, který generuje WordPress – třeba HTML kód menu. Není důvod si ho kódovat sám, když mi sám generuje nějaké třídy, které říkají, že je to aktivní položka, a které říkají, že má podpoložky. Není důvod si to úplně dělat po svém, když WordPress mně generuje nějaké HTML, které má nějakou sémantiku a lze ho stylovat.

MM: A když bys tam chtěl to Bootstrap HTML, tak je tam ta možnost?

JB: Je tam možnost – do velmi značné míry. Já budu demonstrovat na tom školení, že to lze postavit na Bootstrapu – my nepoložíme jediný kousek CSS kódu, prostě vezmeme to HTML, které generuje, a uděláme si dvouúrovňové menu, uděláme si patičku s widgety a výpis článků, stránku, ve které je vloženého něco extra.

MM: To jsem zklamaný, protože i v tomto je WordPress na tom lépe, než jsem si myslel…

JB: Jde to, ale někdy to bolí. Znamená to, že proniknout do toho, jak to udělat, dá dost práce a je to těžší než nějak nakódovat to své HTML. Ale když už tím pronikneš, tak to máš vyřešené a funguje to.

MM: Takže když je někdo frontenďák a když si chce ty věci víc vymazlit, vychytat, aby se mu s tím pracovalo dobře, a i když je to designér, který si to sám nakóduje nebo je to tým tady těch dvou lidí, tak WordPress je úplně v pohodě – teďka vlastně nově…

JB: Ano.

MM: Vyčerpali jsme všechna témata – a já děkuji Honzovi, že přijal pozvání.

JB: Děkuji za pozvání i za možnost oslovit tvé posluchače.

MM: Rádo se stalo, rád jsem tě viděl! A ještě než se rozloučíme, za poskytnutí útočiště pro nahrávání musím poděkovat firmě Maternia, která provozuje e-shop VašeČočky.cz. Díky všem, co nás poslouchali. Těšíme se na slyšenou u dalších epizod podcastu ze VzhůruDolů.cz. Od mikrofonu se loučí Martin Michálek.