Blog

Prestaňte prestavovať každý WordPress web

Praktický sprievodca námietku po námietke, ako štandardizovať WordPress zostavy pomocou theme.json a blokových vzorov – bez toho, aby bola každá klientska stránka rovnaká.

Zhrnutie

Väčšina agentúr stavia každý WordPress web od nuly z prázdnej témy, aj keď by zdieľaný základ ušetril týždne z harmonogramu. Tento článok tvrdí, že theme.json, blokové vzory a dynamické bloky vám umožňujú štandardizovať štrukturálnu vrstvu pri zachovaní charakteristického dizajnu každého klienta. Priamo sa zaoberá piatimi námietkami, ktoré bránia tímom v zmene: „máme rôznych klientov“, „vlastné bloky sú drahé“, „editor je mätúci“, „prídeme o hooks a filtre“ a „FSE nie je pripravené na produkciu“. Ku každej námietke ponúka praktický protiargument a konkrétny vzor, ktorý môžete prijímať postupne. Výsledkom je opakovateľný proces výstavby, ktorý stále rešpektuje zákazkovú prácu tam, kam patrí. Pozor: žiadne tlačidlo na jednoklikový reset sa nesľubuje.

Koľko z vašich klientskych webov zdieľa čo i len jeden riadok kódu? Nie riadok s copyrightom – skutočný kód. Ak je odpoveď „takmer žiadny“, už ste pocítili tú bolesť: rovnaká hero sekcia prestavaná po deviaty raz, rovnaký markup tímovej mriežky skopírovaný z projektu na projekt, rovnaké úpravy preprocessora krížovo odkazované v pol tucta tém. Počuli ste aj obhajobu: „Každý klient má iné potreby.“ Pravda. Záver, ktorý si však každý odvodí – že každý web potrebuje zákazkový základ – je nepravdivý. Ekosystém WordPress vám teraz dáva spôsob, ako štandardizovať štrukturálne časti bez štandardizácie dizajnu: theme.json pre dizajnové tokeny, blokové vzory pre opakované rozloženie a dynamické bloky pre hŕstku funkcií, ktoré potrebujú skutočnú serverovú logiku. Tento článok sa zameriava na námietky, ktoré bránia agentúram urobiť tento krok, a na to, čo skutočne funguje, keď im oponujete.

Námietka „ale každý klient je iný“

Základný princíp: štandardizujte základ, nie povrch. Dôvod, prečo ponechať štruktúru v zdieľanej knižnici, je práve ponechať vizuálnu vrstvu voľnú. Súbor theme.json nie je dizajn – je to sada dizajnových tokenov. Farby, rozostupy a typografia sú hodnoty, nie markup. To je kritický posun: môžete zdieľať markup, zatiaľ čo theme.json pre konkrétny web spôsobí, že web bude pre inú značku vyzerať úplne inak.

Vezmite si dvoch klientov: právnickú firmu a predajcu outdoorového vybavenia. Ich dizajnové jazyky sú na hony vzdialené. Obaja však potrebujú hero sekciu, mriežku referencií, pás výzvy na akciu. Namiesto prestavby markupu pre každého udržiavajte tri blokové vzory a nechajte theme.json každého klienta definovať farby, písma a rozostupy. Štruktúra zostáva identická; dizajnové tokeny ju premenia z jednej značky na druhú. Keď predajca budúcu jar zmení svoju farebnú paletu, upravíte jeden súbor na ich webe – nie markup v šiestich šablónach.

Prakticky to znamená, že váš tím vytvára vzory ako kód, registruje ich v zdieľanom plugine a necháva theme.json na webe každého klienta, aby sa postaral o náter. Názvy tried vzoru sa stávajú vašou architektúrou; hodnoty sa stávajú premennými. Môžete ísť ešte ďalej a rozšíriť theme.json o vlastné nastavenia pre typy príspevkov alebo výstup pluginov, hoci v určitom bode staviate konfiguračné rozhranie namiesto webu – pasca, o ktorej sa hovorí v našom pohľade na rozširovanie theme.json. Udržujte zdieľanú vrstvu štíhlu: mala by obsahovať iba to, čo sa opakuje naprieč klientmi. V momente, keď zistíte, že pridávate nastavenie „keby to náhodou niekto niekedy chcel,“ vytvorili ste abstrakciu, ktorá bude stáť viac na údržbu, než ušetrí.

Pri nastavovaní nového klienta by prvých tridsať minút malo byť: sklonujte zdieľaný plugin vzorov, vytvorte nový theme.json s paletou a škálou písma klienta a zaregistrujte ich logo a pätičku. To nie je zákazková stavba; je to konfiguračná úloha. Zostávajúca práca špecifická pre klienta ide do obsahu, štruktúry a akýchkoľvek skutočne zákazkových funkcií. Toto je rozdiel medzi stavbou každého domu od nuly a mať sadu prefabrikovaných pôdorysov, ktoré môžete premaľovať a pretapetovať. Analógia je voľná, ale princíp platí: čím viac presuniete do hodnôt theme.json, tým menej sa musíte dotýkať markupu.

Jedným z najjednoduchších víťazstiev je skutočne sa pozrieť na to, ako fungujú blokové vzory. Vzor je len kolekcia blokov s preddefinovaným obsahom a štýlmi. Akúkoľvek konfiguráciu blokov môžete uložiť ako vzor a klient ho potom môže vložiť bez toho, aby potreboval vedieť, ako je postavený. To znamená, že vzor sa stáva „vstupným bodom“ pre netechnických používateľov. Keď váš tím udržiava základný vzor v kóde, klient dostane konzistentnú knižnicu bez toho, aby sa dotkol jediného PHP tagu.

Teraz upozornenie, ku ktorému sa stále vraciam: neprecentrujte. Theme.json s nastavením pre každú mysliteľnú nuanciu je močiar údržby. Zdieľané vzory by mali byť názorové, nie všemohúce. Ak klient potrebuje radikálne iné rozloženie – povedzme, časopisovú domácu stránku s veľkou mriežkou odporúčaného obsahu – nemusí sa hodiť do vašej štandardnej knižnice vzorov. To je v poriadku. Štandardizácia znamená, že vyhrávate na 80 % podobných projektov, nie že nútite každý web do rovnakej formy.

Námietka „vlastné bloky vyhodia rozpočet“

Tu je proti princíp, ktorý znie nudne, ale šetrí peniaze: väčšina vecí, o ktorých si myslíte, že potrebujú vlastný blok, ich nepotrebuje. Základné bloky plus vzor dokážu pokryť drvivú väčšinu rozložení. Vlastný blok je posledná možnosť, nie prvý zámer.

Klasickým príkladom je mriežka tímu. Ak ide o jednorazovú záležitosť, použite základné bloky „stĺpce“ a „skupina“ a nechajte klienta vložiť avatara ručne. Ak traja klienti požiadajú o rovnakú mriežku s rovnakou štruktúrou „odkazy na sociálne siete pod menom“, máte kandidáta na blokový vzor. Keď vzor začne zbierať nové možnosti – hover efekty, triedenie, hviezdičky hodnotenia – vzor sa stane nespravovateľným miešancom a potom je čas napísať vlastný blok. Chyba, ktorá bolí rozpočet, je skočiť rovno na vlastný blok pri prvej požiadavke.

Zákernejší scenár: klient požiada o „karusel prípadových štúdií.“ Prvý inštinkt je myslieť si: „Potrebujem karuselový blok.“ Ale naozaj potrebujú karusel? Možno potrebujú horizontálne posúvateľnú skupinu príspevkov, ktorú základné bloky zvládnu pomocou bloku „skupina“ a trochy CSS. Alebo možno potrebujú dynamický zoznam nedávnych prípadových štúdií, čo je dynamický blok, ktorý sa pýta na CPT. Otázka nie je „akú funkciu klient chce?“ ale „na akých dátach závisí?“ Ak sú dáta statické a editovateľné klientom, vzor bude stačiť. Ak dáta pochádzajú z databázového dopytu, dynamický blok je opodstatnený. Ak sa dáta musia aktualizovať v reálnom čase z API, možno sa pozeráte na integráciu REST API – to prechádza do iného druhu vývoja.

Keď už blok staviate, block.json je váš priateľ. Je jediným zdrojom pravdy pre atribúty, skripty a štýly, vďaka čomu je blok prenositeľný medzi projektmi. Umožňuje tiež čisto deklarovať závislosti a preklady, čo je nevyhnutné, keď distribuujete knižnicu na mnohé klientske weby. Pre obsah, ktorý závisí od živých dát, sa dynamický blok renderuje na serveri, takže nemusíte posielať JavaScript balíček pri každom zobrazení stránky. A ak sa váš blok vyvíja, môžete elegantne spracovať zastarávanie, aby sa existujúci obsah nerozbil – náš sprievodca zastarávaním blokov vás prevedie presným vzorom.

Predtým, než čokoľvek postavíte, prejdite rozhodnutie cez túto tabuľku:

PrístupNajlepšie preVyhnite sa, keď
Základný blokJednorazový obsah, jednoduché stránkyRozloženie sa opakuje u mnohých klientov a potrebuje bohaté možnosti
Blokový vzorOpakované rozloženia bez logikyRozloženie potrebuje podmienky, dynamické dáta alebo komplexné interakcie
Vlastný blokOpakované, dátovo riadené alebo vysoko špecifické správanieJediným dôvodom je jednorazová sekcia, ktorá sa dá vyriešiť triedou

Tiež budete chcieť myslieť na pomenovanie blokov od prvého dňa. Názov bloku je v podstate zmluva s vašim obsahom. Ak ho nazvete wagent/team-grid a neskôr ho premenujete na wagent/team-carousel, rozbijete existujúci obsah, pokiaľ neposkytnete cestu pre zastarávanie. Vyberte si všeobecné názvy založené na účele, ktoré sa nestanú falošnou reklamou, keď sa blok vyvíja. Toto je príchuť disciplíny pomenovávania, ktorú sme sa všetci naučili z prefixov pluginov, a platí rovnako pre názvy blokov.

Kontrariánsky pohľad, ktorý je tu najužitočnejší, je tento: vlastný blok, ktorý postavíte, pretože klient požiadal o „len jeden kúsok,“ je takmer vždy chyba. Zdvorilo povedzte nie, dodajte základný blok s triedou a uschovajte hodiny. Získate si väčší rešpekt u klienta – a menšiu položku v rozpočte na údržbu.

Námietka „klienti rozbijú editor“

Táto námietka je z polovice pravdivá. Samotný blokový editor nie je problém; problém je dať klientom príliš veľa voľnosti. theme.json môže uzamknúť, čo je editovateľné: zakázať editor šablón, obmedziť povolené bloky a nastaviť predvolené štýly, aby nesprávne umiestnený stĺpec spôsobil menšie škody. Niektorí klienti to aj tak dokážu rozbiť, ale môžete stránku vrátiť do uloženého vzoru jedným kliknutím – niečo, čo klasický editor neponúkal.

Dovoľte mi načrtnúť scenár. Klient zavolá a povie: „Presunul som sekciu a teraz celá stránka vyzerá zle.“ Pri klasickej téme by ste sa prihlásili, preskúmali CSS a pravdepodobne strávili hodinu opravou rozloženia. Pri blokovom nastavení môžete otvoriť stránku, vybrať oblasť obsahu a resetovať ju na uložený vzor. Vzor je základná línia; zmeny klienta sú prekrytie. Keď sa prekrytie pokazí, odstránite ho. To nie je len lepší pracovný postup; je to zásadne zhovievavejší editor.

Teraz nuansa: väčšina klientov nechce vôbec veľa editovať. Chcú meniť text, vymieňať fotky a možno preusporiadať sekciu. Blokový vzor vám dá presne to bez vystavenia celej štruktúry webu. V tomto zmysle editor nie je hračka; je to hľadáčik. Vašou úlohou je kalibrovať, čo klienti vidia. To znamená, že môžete zakázať nastavenia „Šablóny“, obmedziť vkladanie blokov na vybraný zoznam a dokonca predvyplniť prázdne vzory zástupnou prácou. Editor sa stane formulárom na zadávanie obsahu skôr než plátnom na webdizajn.

Na strane prístupnosti je správa fokusu a podpora klávesnice blokového editora vo všeobecnosti lepšia ako polia šablón klasického editora. Stále však musíte zabezpečiť, aby vzory mali správnu hierarchiu nadpisov a prístupné názvy. Keďže vzor je zdieľaný naprieč klientmi, tieto problémy opravíte len raz, čo je ďalšia skrytá výhoda štandardizácie.

Skutočne ťažká časť je vnútorná. Pre váš tím si učenie prototypovania s blokmi vyžaduje odnaučiť sa zvyk „rob to v PHP.“ To je skutočný náklad, ale je to jednorazový náklad na osobu. Nie je to dôvod vyhnúť sa prístupu; je to dôvod začať s jednou knižnicou vzorov a jedným zhovievavým klientom, kým to zavediete všade. Nenechajte refrén „moji klienti nevedia pracovať s blokmi“ skryť skutočnosť, že ste ešte nenakonfigurovali blokové nastavenie, aby im vyšlo v ústrety.

Námietka „už máme hooks a filtre“

Princíp je tu: nezbavujete sa hooks; pridávate vrstvu navrch. Bloky sú hranicou prezentácie; hooks sú stále spôsob, akým vkladáte logiku. Render callback dynamického bloku beží v PHP, čo znamená, že môžete volať rovnaké funkcie a aplikovať rovnaké filtre, ktorým už dôverujete.

Predstavte si plugin, ktorý vám umožní pridať pole „odporúčaný produkt“ do akéhokoľvek príspevku pomocou filtra. S dynamickým blokom môžete zahrnúť serverom renderovaný blok, ktorý spustí tento filter a vytlačí výstup vo vnútri obalu bloku. Klient vloží blok; existujúca PHP logika robí ťažkú prácu. Nič sa nevyhodí. Ešte konkrétnejší príklad: zvážte vlastný blok, ktorý zobrazuje zoznam nedávnych projektových príspevkov. V jeho render callbacku zavoláte get_posts(), potom prejdete slučkou a aplikujete the_title() a the_permalink() – rovnaké template tagy, ktoré používate roky.

Toto je tiež miesto, kde treba byť úprimný o tom, čo sa nedá preniesť. Niektoré šikovné staré témy používajú template-parts so zložitými podmienkami, ktoré berú argumenty na základe kontextu stránky. Znovuvytvorenie tohto ako bloku môže byť chaotické. Nemusíte to však znovu vytvárať naraz. Inkrementálna cesta je ponechať PHP logiku, zabaliť ju do dynamického bloku a presunúť markup do šablóny bloku. Často zistíte, že vaše existujúce vzory filtrov zvládnu nový výstup. A ak je logika úzko spätá s hierarchiou šablón (napr. „na výsledkoch vyhľadávania to zobraz inak“), môžete stále použiť klasickú šablónu pre tieto konkrétne zobrazenia, zatiaľ čo pre bežné stránky používate bloky.

REST API tiež otvára iné dvere: môžete vytvárať bloky, ktoré ťahajú dáta z iných WordPress webov alebo služieb tretích strán. Dynamický blok môže zavolať wp_remote_get() na načítanie JSON a renderovať ho na frontende. To je výkonný vzor pre agentúrne projekty, kde klienti chcú zobrazovať sociálne feedy, zoznamy produktov alebo interné dáta bez spravovania samostatnej integrácie. Kompromisom je caching a spracovanie chýb – ak je vzdialené API pomalé, vaša stránka je pomalá. Udržujte bloky založené na API mimo kritického obsahu nad záhybom, alebo použite renderovanie na strane klienta s riadnym stavom načítavania.

Akcie a filtre stále bežia okolo ukladania a renderovania; architektúra hooks nezmizne, keď prijmete bloky, len sa presunie do nového kontextu. Ak si potrebujete osviežiť pochopenie toho, kde sa akcie a filtre stretávajú s týmto novým blokovým svetom, náš hlboký ponor do hooks je užitočným osviežením.

Námietka „FSE nie je pripravené na produkciu“

Fér, ale spýtajte sa, čo „rizikový“ vlastne znamená. Full Site Editing prešiel niekoľkými vydaniami a theme.json sa ustálil na stabilnej schéme. Riziko nie je, že sa editor „náhle rozbije“ – riziko je, že vlastný kód vášho tímu môže závisieť od starých PHP šablón, ktoré neohrabane koexistujú s blokovými šablonami. Niektoré pluginy tretích strán tiež stále predpokladajú klasický editor alebo customizer. To je rozhodnutie o kompatibilite, nie dôvod zahodiť celý model.

Užitočný spôsob rozmýšľania: jednoduché, opakovateľné weby s obsahom napísaným v blokoch sú najmenej rizikové. Vysoko rizikoví klienti sú tí s hlboko upravenými klasickými témami alebo proprietárnymi pluginmi, ktoré renderujú vlastný frontend. To je legitímny dôvod zostať pri klasických témach pre tú malú niku. Chybou je predstierať, že „pripravené na produkciu“ je jediný prepínač, ktorý je buď zapnutý, alebo vypnutý.

Predtým, než klientovi navrhnete blokovú tému, prejdite si rýchly kontrolný zoznam:

  • Má klient vysoko upravenú tému, ktorá by vyžadovala migráciu?
  • Podporujú povinné pluginy Site Editor a REST API?
  • Umožňuje hostingové prostredie prístup k súborom, ktorý bloková téma očakáva?
  • Vyhradili ste si čas na dizajn vzorov, nielen na registráciu blokov?
  • Bude tím klienta tolerovať zmeny v editore, alebo potrebujú uzamknutú šablónu?

Ak je odpoveď na niektorú otázku nie, upravte rozsah alebo použite hybridný prístup. To nie je kompromis; je to inžiniersky úsudok. A ak staviate hybrid, pamätajte na príbeh o hooks a filtroch vyššie – starú logiku môžete stále zabaliť do dynamických blokov, zatiaľ čo theme.json sa stará o globálny vzhľad.

Verzovanie theme.json nie je len teoretická obava. Videl som, ako sa knižnica vlastných blokov agentúry rozbila, keď klient aktualizoval WordPress a style súbor bloku zaregistrovaný pomocou wp_register_style() pod zmeneným handle. Oprava bola jednoduchá, ale panika bola skutočná. Jednoduchý testovací proces – spustite aktualizáciu na staging kópii webu, preklikajte kľúčové stránky a potom nasaďte – vyrieši väčšinu týchto prekvapení.

Námietka, ktorú ste si ešte nevzniesli

Tu je meta-námietka, ktorá bráni agentúram v štandardizácii: „Je to veľká zmena a počas klientskej práce na ňu nie je čas.“ To je pravda – tak to nerobte počas klientskej práce. Vyberte si interný projekt alebo malého klienta a postavte jednu knižnicu vzorov. Použite theme.json ako systém dizajnových tokenov. Pridajte vlastný blok, len keď je to opodstatnené. Zabaľte staré hooks tam, kde pomáhajú. Iterujte.

Tu je približný prvý mesiac (30 dní):

  1. Skontrolujte svoje posledných päť klientskych projektov a zoznam desiatich najopakovanejších častí rozloženia.
  2. Premeňte tých desať častí na blokové vzory s malou sadou CSS tried.
  3. Vytvorte zdieľaný plugin (alebo mu-plugin), ktorý tieto vzory registruje. Ak ste ešte nerozmýšľali o organizácii pluginov, najprv si prelistujte tento sprievodca budovaním robustných pluginov.
  4. Vytvorte jeden theme.json, ktorý zodpovedá vášmu základnému dizajnu; pri spúšťaní projektov pridávajte hodnoty špecifické pre klienta.
  5. Vyberte jeden malý interný projekt alebo priateľského klienta a migrujte ho na tento stack.
  6. Zdokumentujte jeden hrdinský príbeh klienta, ktorý upravil svoju domovskú stránku bez toho, aby vám volal.

Na konci tohto experimentu nebudete mať odznak „block-first“ na zavesenie na stenu. Budete mať tím, ktorý dokáže rozbehnúť nový klientsky web zo zdieľaného základu bez ospravedlňovania sa za harmonogram. Budete tiež v lepšej pozícii povedať nie žiadosti klienta o 42. vlastný blok – pretože presne viete, čo základné bloky dokážu, alebo pretože môžete ukázať, prečo by dynamický blok bol skutočne rýchlejší.

Budete stále stavať niektoré zákazkové weby? Áno. Niektorí klienti budú vždy potrebovať vlastnú šablónu, zákazkovú stránku alebo proprietárnu integráciu, ktorú sa neoplatí tlačiť do zdieľaného modelu. Cieľom nie je eliminovať zákazkovú prácu – je z nej urobiť výnimku, nie štandard.

Opakovateľnosť pochádza z nudných častí: solídna schéma theme.json, jasná knižnica vzorov a disciplína udržiavať zdieľanú vrstvu štíhlu. Toto nie je ligotavá verzia, ktorú počúvate na webinároch. Je to tá, ktorá poráža pondelkové ráno s prázdnou témou.

Sources (5)