Pereiti prie turinio
Tvarkingesnis WordPress klaidų gaudymas su Acorn: nuo WP_DEBUG iki Ignition
Hannah Turing
Hannah Turing 2023. February 14. · 4 min read

Tvarkingesnis WordPress klaidų gaudymas su Acorn: nuo WP_DEBUG iki Ignition

Kai dirbi su WordPress lokaliai, WP_DEBUG turėtų būti įjungtas praktiškai visada: taip greičiau pamatai notice, warning ir fatal klaidas, kurios kitu atveju tyliai sugadintų funkcionalumą arba „užsikrautų“ į produkciją. Problema ta, kad numatytas WordPress klaidų išvedimas į ekraną yra gana primityvus: gauni tekstą be konteksto, be tvarkingo stack trace, o kartais ir be aiškaus kelio iki vietos, kurią reikia taisyti.

Jei tavo projektas paremtas Roots ekosistema (Bedrock + Acorn), situaciją galima smarkiai pagerinti be papildomų „magijų“. Acorn (Roots framework, į WordPress atnešantis dalį Laravel patogumų) sugeba perimti WP_DEBUG klaidų atvaizdavimą ir parodyti jas žymiai suprantamiau.

Kas iš tikrųjų daro WP_DEBUG (ir kodėl to neužtenka)

WP_DEBUG – tai WordPress konstantos pagrindu įjungiamas debug režimas. Praktiškai tai reiškia, kad WordPress pradeda rodyti PHP pranešimus ir klaidas (priklausomai nuo konfigūracijos, pvz. WP_DEBUG_DISPLAY). Tai geriau nei nieko, ypač kuriant temas ir įskiepius, nes WordPress ekosistemoje vis dar apstu kodo, kuris generuoja notices ir kitus įspėjimus.

Tačiau numatytas išvedimas į naršyklę dažnai atrodo kaip „plika“ žinutė be ergonomikos: sunku greitai perskaityti, sunku atsirinkti, kur tikroji problema, o kur tiesiog triukšmas.

Numatytas WP_DEBUG klaidų išvedimas WordPress aplinkoje
Numatytas WordPress WP_DEBUG: klaidos rodomos tiesiai puslapyje, be patogaus konteksto. — Forrás: Roots.io

Acorn: geresnė WP_DEBUG patirtis be papildomų įskiepių

Acorn pagerina WP_DEBUG išvedimą tada, kai įjungti WP_DEBUG ir WP_DEBUG_DISPLAY. Vietoje to, kad pamatytum tik tekstinę klaidą, gauni aiškiau suformatuotą exception puslapį su stack trace ir kontekstu.

Pagal nutylėjimą Acorn naudoja Symfony exception handler’į (klaidų gaudyklę). Symfony ekosistemoje tai įprasta praktika, ir rezultatas WordPress’e tampa gerokai „žmogiškesnis“.

Acorn su Symfony exception handler: tvarkingesnė WordPress klaidų išklotinė
Acorn numatytasis vaizdas: skaitomas exception puslapis vietoje „plikos“ žinutės. — Forrás: Roots.io

Ignition WordPress’e: kai nori Laravel lygio klaidų puslapio

Jei esi dirbęs su Laravel, greičiausiai pažįsti Ignition – tai Laravel numatytasis error page nuo Laravel v9. Roots Acorn v3 kontekste atsirado svarbus pokytis: Acorn turi routing palaikymą Laravel stiliumi, o tai reiškia, kad Ignition dabar gali veikti ir WordPress projektuose, kuriuose naudojamas Acorn.

Praktinis rezultatas – labai patogus klaidų ekranas su aiškiu stack trace, kontekstu ir geresne navigacija po klaidos priežastis. Jei tavo komanda maišo WordPress ir Laravel patirtis, Ignition tampa natūraliu pasirinkimu.

Acorn su Ignition: Laravel stiliaus klaidų puslapis WordPress aplinkoje
Ignition WordPress’e per Acorn: panaši patirtis kaip Laravel projektuose. — Forrás: Roots.io

Kaip įsidiegti Ignition (tik dev aplinkai)

Ignition diegiamas per Composer kaip development priklausomybė (kad nebūtų diegiama į produkciją). Komandą vykdyk tame pačiame kataloge, kur įdiegtas Acorn:

composer require spatie/laravel-ignition --dev

Pastaba apie saugumą ir aplinkas

Klaidos su stack trace ir kontekstu yra skirtos development aplinkai. Už produkcijos ribų tokia informacija gali atskleisti per daug detalių apie sistemą, todėl praktikoje WP_DEBUG ir WP_DEBUG_DISPLAY laikomi išjungti.

Kas su whoops? (aktualu, jei dar sėdi ant Acorn v2)

Iki Acorn v3 dažnai buvo rekomenduojama naudoti whoops (populiari PHP klaidų atvaizdavimo biblioteka). Jei projekte dar naudojamas Acorn v2, whoops vis dar gali suteikti geresnį rezultatą nei bazinis Symfony puslapis. Visgi Roots rekomenduoja judėti į Acorn v3, nes ten Ignition integracija tampa natūralesnė.

Acorn klaidų išvedimas su whoops
whoops – alternatyvus patogesnis klaidų vaizdavimas, dažniau minimas Acorn v2 kontekste. — Forrás: Roots.io

Jei nenaudoji Acorn: dvi praktiškos alternatyvos WordPress’e

Ne visi WordPress projektai turi Acorn – kartais tai klasikinė tema, kartais įskiepių kūrimas, kartais paveldėtas kodas. Tokiu atveju vis tiek galima susitvarkyti debug patirtį su gerai žinomais įrankiais:

  • Query Monitor – vienas naudingiausių įrankių lokaliai: užklausos, hook’ai, HTTP užklausos, klaidos ir daug kitų diagnostikos duomenų.
  • Debug Bar – lengvesnis variantas su pagrindine diagnostika ir debug informacija.

Santrauka: ką pasirinkti realiame projekte

  1. Visada įjunk WP_DEBUG lokaliai – tai greičiausias būdas pamatyti triukšmą, kurį WordPress pasaulis generuoja kasdien.
  2. Jei naudoji Acorn, gausi tvarkingesnį exception vaizdą automatiškai (su Symfony handler’iu).
  3. Jei nori geriausios klaidų puslapio patirties ir tau artimas Laravel darbo stilius, Acorn v3 + Ignition yra labai stiprus derinys.
  4. Jei Acorn nenaudoji, Query Monitor dažniausiai duoda didžiausią naudą per mažiausią laiką.
Hannah Turing

Hannah Turing

WordPress kūrėja ir techninė rašytoja HelloWP. Padedu kūrėjams kurti geresnes svetaines naudojant šiuolaikinius įrankius, tokius kaip Laravel, Tailwind CSS ir WordPress ekosistema. Aistringai vertinu švarų kodą ir kūrėjo patirtį.

Visi įrašai

Prisijunkite prie HelloWP bendruomenės!

Bendraukite su mumis apie WordPress, žiniatinklio kūrimą ir dalinkitės patirtimi su kitais kūrėjais.

- nariai
- prisijungę
Prisijungti

We use cookies to improve your experience. By continuing, you agree to our Cookie Policy.