Lesk a bída formulářových pluginů pro WordPress

Vydal Jan Bien | 08/2015 | Trvalý odkaz | Komentáře (4)

Malá exkurze do formulářových pluginů pro WordPress. Jaký si pro formuláře vyberete vy?

Kontaktní formulář je součástí snad každého webu a pro WordPress je na to tvorbu formulářů hromada pluginů. Přečíst si o nich člověk může v řadě srovnání, namátkou u Elegant Themes nebo WPMU DEV. Tímto článkem bych k nim rád přidal pár poznámek z pohledu agenturního vývojáře a kodéra.

Začnu s Gravity Forms (GF), které znám nejvíce do hloubky. Jdou s nimi jednoduše a “100% blbuvzdorně” udělat i hodně složité formuláře s mnoha prvky a rozložené do kroků na více stránek. Dokonce umí třeba takový nákupní seznam s dynamickým výpočtem ceny — pro někoho, kdo prodává pár věcí je to skvělá nízkorozpočtová alternativa k plnohodnotnému e-shopu s košíkem. Odeslané formuláře se ukládají do databáze a posílají emailem. Posílat jde na neomezeně adres a samotné emaily je možné pěkně personalizovat. Dokonce lze z formuláře vytvářet nové články a registrovat nové uživatele.

Vadí mi ale, a to čím dál víc, že si GF do hlavičky stránky nalinkuje 4 stylopisy a 3 javacripty v celkovém objemu 150 kB. A to, pěkně prosím, i pro úplně jednoduchý kontaktní formulář! Pokusy o jakés takés spojení a minifikaci končí většinou nefunkčním formulářem. Jenom přesunout javascripty do patičky je alchymie na hranici hacku, o nějakém pokročilejším tuningu a asynchronním načítání už pak nemůže být ani řeč. (Aktualizace 20.8.2015: Beru zpět svá slova, spojení a minifikace GF je možná.)

GF jsou určitě hodně zajímavé z pohledu byznysového. Prémiový výdělečný plugin, jehož zdrojáky jsou komplet svobodné GNU GPL 3, tak jak si to WordPress vyžaduje. Účtován je pravidelný poplatek za distribuci nových verzí, prémiové funkce a podpora.

Dalším pluginem je nejrozšířenější Contact Form 7. Moc toho neumí a na kdejakou prkotinu je proto hromada modulů. Sympatické je to, že si mohu HTML kód udělat víceméně podle sebe. Také se mi líbí jeho úsporný minimalistický výstup — miniaturní stylopis a scripty jen na několik kB a navíc připojené pěkně v patičce.

Caldera Forms mi jsou pár měsíců úplně nejsympatičtější. Plugin je to mladý (jeden rok), bezplatně dostupný, má krásnou dokumentaci a vypadá pěkně, čistě a principiálně dobře napsaný. A způsob skládání CF formulářů do mřížky je nepřekonatelný. Kdyby existovali Caldera Forms před pár lety, tak bych tehdá GF nekupoval. Mimochodem, autor David Cramer se také podílí na WP frameworku Pods.

Ninja Forms mi (když si to spočítám na rozšířeních) přijdou jako dražší varianta ke GF. Cred coby součást Toolsetu jsou asi nejblíže mé představě pluginu pro vývojáře a kodéry.U Formidable Form, navzdory svému stáří (5 let), si nejsem jistý, kým chce plugin být. Teď to vypadá spíše na nepříliš povedenou snahu o alternativu k Toolsetu. Závěrem výčtu si neodpustím odkaz na obskurní Jazzy Forms, který se ocení ti, kteří si chtějí sestavit něco, jako formulářovou kalkulačku.

V poslední řadě jsou to ještě pluginy pro custom fieldy. Třeba ACF či CMB2. Ale jakmile je člověk potřebuje ve frontedu alespoň trochu přizpůsobit nebo by snad měly dělat něco jiného, než k čemu je zamýšleli autoři (něco jiného než ukládat custom fieldy), tak zase pohoří.

O dalších pluginech už tu psát nebudu. Všechny mají stejný principiální problém.

Slovy klasika, “Je cosi shnilého ve státě dánském …”

Budu to ilustrovat na hypotetickém webu s eshopem, s registrací uživatelů, přihlašováním a profily uživatelů a s kontaktním formulářem. Ať netroškaříme, poskládáme si web ze 3 nejznámějších a dostatečně kvalitních pluginů, kde každý z nich se nám postará o příslušný kus funkčnosti a příslušné formuláře: WooCommerce (nákupní košík a objednávka) + Profile Builder (editace uživatelského profilu) + Gravity Forms (kontaktní formulář). Protože si ale každý plugin řeší formuláře řeší po svém, tak ve výsledku dojde k tomu, že:

  1. Formuláře napříč webem budou nekonzistentní. Jak říkávala moje babička, “každý pes, jiná ves”. Objednávkový formulář bude jiný než ten na editaci uživatelského profilu a ten pak zase jiný, než kontakťák.
  2. Každý plugin si pro své formuláře ve frontendu připojí vlastní styly a scripty. Načítat se tak bude zbytečně mnohem více dat a opakují se funkce, které v principu dělají totéž.
  3. Potenciálně mohou v budoucnu vzniknou konflikty a nekompatibility mezi dalšími pluginy a šablonou.

Nabíledni je otázka: Nejde to nejde nějak sjednotit? Jako vývojář mám samozřejmě tu možnost. Hypotetickou. Nastuduji 3 dokumentace a najdu průnik. Prakticky to bude otravné, neadekvátně nákladné, mentálně náročné, kompromisní … kdo tu říkal zbastlené tak to trefil.

Ale bylo by nefér zlobit se za to na pluginy. Každý framework by totiž měl formuláře řešit nativně, viz: Nette, Symfony, Laravel. Že to WordPress, coby “content management framework”, doposud v jádře prakticky neřeší (pominu-li nonce_field), je jeho velká ostuda. Tohle opravdu patří do jádra daleko spíše než favicon a emoji, a s nesnesitelnou bolestí v srdci bych oželel i customizer, jež jsem doposud nepoužil. Tím, že WordPress neřeší formuláře již v jádře, produkuje neblahé vlastnosti celého WP ekosystému a produkuje další a další problémy. Ale o tom někdy příště.

Tož tak.

O autorovi

Jan Bien
Jan Bien
Jako kluk jsem si hrál se stavebnicí Merkur, kterou jsem v dospělosti (lze-li o něčem takovém u muže vůbec mluvit) vyměnil za WordPress. S WordPressem kouzlím zajímavé weby, radím lidem, zda je WordPress dobrý nápad pro konkrétní projekt, a občas koučuji jiné freelancery, co a jak s WordPressem podniknout ke spokojenosti své i svých klientů.

4 komentáře: “Lesk a bída formulářových pluginů pro WordPress”

  1. Jirka napsal:

    Dobrý den, umíte mi poradit ohledně Caldera Forms? Mám ve formuláři text všeobecných podmínek, přes Paragraph TextArea a tento text nechci přeposílat do mailové zprávy. Tzn. chci ať je to vidět na webu, ale nechci ať to příjde v mailu.

    Děkuji za pomoc

  2. Jan Bien Jan Bien napsal:

    Jirko, vložte tam Element “Content -> HTML”. Do něj už si můžete vepsat libovolný HTML kód, tedy klidně text s obchodními podmínkami.

  3. Ales napsal:

    Dobrý den, váš článek je zajímavý. Již delší čas řeším editaci uživatelského profilu. Zákazník se přihlásí pod svým účtem a vidí, které služby nakoupil. Může je upravovat nebo měnit atd. Myslíte si, že je to možné postavit pomocí nějakého pluginu např. Profile Builder a nebo spíše to napsat od začátku např v Nette? Děkuji za radu.

  4. Jan Bien Jan Bien napsal:

    Aleši, díky za dotaz a omlouvám se za hodně pozdní odpověď.

    Ano, míříte správným směrem. Profile Builder je nejznámější plugin na tvorbu editačních formulářů pro profily, a je vhodný pro tvůrce, kteří nejsou vývojáři: Vše jde pohodlně naklikat. Pokulhává to ale právě v tom, co zmiňuji v článku: řeší jen formuláře pro editaci profilu, žádné jiné.

    Řešení skrze Nette Forms, pokud jste vývojář, je myslím nejideálnější. Nechá Vám zcela volnou ruku, jak formuláře mohou vypadat a co mají umět, můžete s tím udělat formulář na úplně vše a Nette Forms se skvěle postarají o validaci.

    Pokud byste používal Toolset, tak s ním by profilové formuláře měli také jít:
    https://wp-types.com/documentation/user-guides/cred-user-forms/

    A zvážil bych možní použít také Caldera Forms, se kterými můžete (svým způsobem) zacházet podobně, jako s Nette: K jakémukoliv formuláři si můžete doplnit svůj kód pro zpracování.

Napsat komentář

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