Pāriet uz saturu
Labāka WordPress atkļūdošana ar Acorn: pārskatāmākas kļūdas, mazāk minēšanas
Hannah Turing
Hannah Turing 2023. February 14. · 5 min read

Labāka WordPress atkļūdošana ar Acorn: pārskatāmākas kļūdas, mazāk minēšanas

Ja WordPress projekts sāk mest notice, warning vai fatālas kļūdas, pirmais solis parasti ir ieslēgt WP_DEBUG. Problēma — WordPress noklusējuma kļūdu izdruka bieži vien ir grūti lasāma: teksts “pa virsu lapai”, minimāls konteksts un stack trace, kas ne vienmēr palīdz ātri saprast, kur tieši viss salūza.

Roots ekosistēmā (Bedrock + Acorn) šo pieredzi var būtiski uzlabot. Acorn ir Roots komponents, kas ienes WordPress projektā Laravel stila iespējas (piemēram, helperus) un arī modernāku error handling (kļūdu apstrādi). Rezultāts: tu redzi kļūdas lapu, kas vairāk atgādina mūsdienīgu PHP framework nekā klasisku WordPress.

Kāpēc WP_DEBUG ir jābūt ieslēgtam lokāli

WP_DEBUG ir WordPress iebūvēts “debug mode” — to aktivizē ar konstanti WP_DEBUG konfigurācijā. Lokālajā izstrādē tas ir praktiski obligāts: ātrāk pamani nepareizus mainīgos, deprecations, kļūdainus hook izsaukumus un citas nianses, kas vēlāk staging/production vidē var pārvērsties par reālām problēmām.

Ja strādā ar Bedrock (mūsdienīgs WordPress boilerplate ar Composer), izstrādes vidē WP_DEBUG parasti jau ir ieslēgts pēc noklusējuma, tāpēc bieži vien atliek tikai sakārtot to, kļūdas tiek rādītas.

WordPress noklusējuma WP_DEBUG izvade: darbojas, bet nav ērta

Noklusējuma scenārijā WordPress vienkārši izvada paziņojumu vai kļūdu tieši lapā. Tas ir labāk nekā klusums, taču, ja tev jāatrisina sarežģītāks izņēmums (exception) ar dziļu izsaukumu ķēdi (stack trace), šī izdruka ātri kļūst par “atrodi adatu siena kaudzē” uzdevumu.

WordPress noklusējuma WP_DEBUG kļūdu izvade pārlūkā
Noklusējuma WP_DEBUG ziņojumi WordPress lapā ir minimālistiski un bieži vien grūti lasāmi. — Forrás: Roots.io

Ko dara Acorn: sakarīga kļūdu lapa, kad WP_DEBUG ir ieslēgts

Acorn uzlabo WP_DEBUG pieredzi gadījumā, kad ir aktīvi WP_DEBUG un WP_DEBUG_DISPLAY. Būtiskā doma: nevis izdrukāt pliku tekstu, bet izmantot mūsdienīgu exception handler (izņēmumu apstrādātāju), kas parāda kļūdu strukturēti.

Acorn noklusējuma kļūdu apstrāde ar Symfony exception handler

Pēc noklusējuma Acorn izmanto Symfony exception handler. Praktiski tas nozīmē: pārskatāmāka kļūdas lapa, labāks stack trace attēlojums un ātrāka orientēšanās, kurā failā/rindā problēma radusies.

Acorn WP_DEBUG izvade ar Symfony exception handler
Acorn pēc noklusējuma izmanto Symfony exception handler, kas kļūdas parāda strukturēti. — Forrás: Roots.io

Ignition WordPress projektā: Laravel līmeņa debug lapa

Ja tev ir Laravel pieredze, visticamāk pazīsti Ignition — tā ir Laravel noklusējuma kļūdu lapa kopš Laravel v9. No Acorn v3 puses ir pieejams Laravel routing atbalsts, un līdz ar to WordPress projektos ar Acorn var izmantot arī Ignition. Tas parasti dod vispatīkamāko kļūdu diagnostikas pieredzi: bagātīgāks konteksts, skaidrāka navigācija, ērtāks stack trace.

Acorn WP_DEBUG izvade ar Ignition (Laravel stila kļūdu lapa)
Ar Ignition WordPress kļūdu lapa izskatās un uzvedas ļoti līdzīgi Laravel pieredzei. — Forrás: Roots.io

Lai sāktu lietot Ignition, to var pievienot ar Composer kā izstrādes atkarību (no tās pašas mapes, kur instalēts Acorn):

composer require spatie/laravel-ignition --dev

Svarīga nianse par vidi

Ignition parasti ir jēgpilns tieši lokālajā izstrādē. Praktiski: turi WP_DEBUG ieslēgtu lokāli, bet rūpīgi izvērtē, ko rādi produkcijā, lai nejauši neatklātu sensitīvu informāciju (ceļus, mainīgos, konfigurāciju).

Whoops: vecāks, bet joprojām izmantojams variants

Pirms Acorn v3 bieži rekomendēja Whoops (populārs PHP error handler). Ja esi uz Acorn v2 un vēl neesi migrējis, Whoops var dot patīkamāku rezultātu nekā Symfony kļūdu lapa, un tas joprojām ir reāls uzlabojums salīdzinājumā ar WordPress noklusējumu. Tomēr no ilgtermiņa uzturēšanas viedokļa loģiskākais ceļš ir skatīties Acorn v3 virzienā.

Acorn WP_DEBUG izvade ar Whoops
Whoops var uzlabot kļūdu lasāmību, īpaši vecākās Acorn versijās. — Forrás: Roots.io

Ko darīt, ja Acorn projektā nav: spraudņi, kas uzlabo debug ikdienu

Ne visi WordPress projekti izmanto Acorn, un dažkārt tas arī nav mērķis (piemēram, ja uzturi ļoti “tīru” klasisku WP uzbūvi). Arī tad vari uzlabot diagnostiku ar spraudņiem, kas palīdz saprast, kas notiek pieprasījuma laikā.

  • Query Monitor — viens no noderīgākajiem rīkiem lokālai WordPress izstrādei; palīdz analizēt vaicājumus, hook izpildi, PHP kļūdas un daudz ko citu.
  • Debug Bar — vienkāršāks, bet bieži pietiekams variants pamatinformācijai par debug stāvokli un izpildi.

Praktiska pieeja: kā salikt kopā jēdzīgu atkļūdošanas plūsmu

  1. Lokāli vienmēr turi ieslēgtu WP_DEBUG (un parasti arī WP_DEBUG_DISPLAY, ja strādā pārlūkā).
  2. Ja projekts ir uz Bedrock + Acorn, izmanto Acorn error handling, lai kļūdas būtu lasāmas un ar kontekstu.
  3. Acorn v3 gadījumā apsver Ignition kā ērtāko kļūdu lapu (Composer --dev atkarība).
  4. Ja Acorn nav, uzliec Query Monitor un izmanto to kā “instrumentu paneli” problēmu meklēšanai.

Kopsavilkums

WP_DEBUG pats par sevi ir minimums jebkurā WordPress izstrādes vidē, taču noklusējuma kļūdu izvade reti palīdz ātri tikt līdz saknei. Acorn šo situāciju būtiski uzlabo: pēc noklusējuma ar Symfony exception handler, bet Acorn v3 gadījumā arī ar Ignition, kas WordPress projektam iedod ļoti pazīstamu Laravel stila atkļūdošanas pieredzi. Ja Acorn netiek lietots, praktisks plāns B ir Query Monitor vai Debug Bar.

Hannah Turing

Hannah Turing

WordPress izstrādātāja un tehniskā rakstniece HelloWP. Es palīdzu izstrādātājiem veidot labākas vietnes ar moderniem rīkiem, piemēram, Laravel, Tailwind CSS un WordPress ekosistēmu. Aizraujos ar tīru kodu un izstrādātāja pieredzi.

Visas publikācijas

Pievienojieties HelloWP kopienai!

Tērzējiet ar mums par WordPress, tīmekļa izstrādi un dalieties pieredzē ar citiem izstrādātājiem.

- biedri
- tiešsaistē
Pievienoties

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