✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Registri, abonentide ja teenuste kasutamine WordPressis

4

TL;DR: Minu arvates on registri, tellijate ja teenuste kasutamine WordPressi jaoks taustaprogrammipõhiste pistikprogrammide ja utiliitide loomisel väga kasulik. See postitus kirjeldab, kuidas seda teha.


Pärast aastatepikkust disainimustrite, objektorienteeritud programmeerimise ja WordPressiga töötamist tekivad kindlasti levinud viisid probleemide lahendamiseks.

Nii saime alustuseks objektorienteeritud disainimustrid, nii et võib-olla on see WordPressi-keskne variatsioon.

Kuigi olen kirjutanud sellistest asjadest nagu registrid eelmistes artiklites (ja sellistes, mis pole isegi nii vanad ), pole kunagi halb mõte sama teema uuesti läbi vaadata, eriti kui on, mida eelmisele artiklile lisada.

Register, abonendid ja teenused

Kõik allpool kirjeldatud tuleb mõista WordPressi pistikprogrammi kontekstis. See tähendab, et see ei ole mõeldud muude raamistike, keelte, rakendustega töötamiseks ega muude mustritega kasutamiseks.

Pidage seda seda lugedes meeles.


Igatahes on nende objektitüüpide kombinatsiooni üldine idee, kui järgmine:

  1. Register käsitleb kõiki tellijaid,
  2. Tellijad kuulavad WordPressi konkse (olemasolevaid või isegi kohandatud konkse),
  3. Teenused teevad tegelikku tööd alati, kui tellija need välja saadab.

Eesmärk on see, et töö väljasaatmise eest vastutavate klasside registreerimiseks on üks koht. See on kõik.

Lisaks muudab see asjade eraldi hoidmise lihtsaks, nii et kui soovite oma teenuseid isoleeritult testida, on see palju lihtsam, kuna need pole tingimata WordPressiga tihedalt seotud. Ja kui need on, siis saate mõnitada andmeid, mis tuleb antud funktsiooni edastada, ja seejärel hinnata tulemust.

See ei ole siiski artikkel testimise kohta, nii et tagasi tegelike klasside juurde.

register

Definitsiooni järgi on registri eesmärk asjadel silma peal hoida. Kui rääkida selle mustri rakendamisest WordPressis, siis on mõte selles, et register saaks jälgida tellijaid (mida määratlen hiljem selles artiklis).

Registri, abonentide ja teenuste kasutamine WordPressis

Denny Mülleri foto saidil Unsplash

Lisaks on idee selles, et kui saabub aeg, mis on teie pistikprogrammi ülesehituse järgi tõenäoliselt erinev, on kõik abonendid instantseeritud. Selle hetkeni soovite aga tõenäoliselt seda teha WordPressi elutsükli alguses.

Sellegipoolest on siin näide abonentide registreerimise koodi kohta:

private $subscribers = [ AssetSubscriber::class, // ... DeletedUserSubscriber::class, ];

Järgmisena on siin funktsioon tellijate loomiseks.

Need plokid võivad olla osa samast funktsioonist või olla eraldi, olenevalt teie vajadustest.

Tellijad

Nagu mainitud, saavad tellijad:

  1. Kuulake WordPressis teatud konksu
  2. Saatke teenus, et teha kõik tööd, mis on ette nähtud antud konksu jaoks.

Seega eeldage hetkeks, et soovite midagi teha, kui kasutaja kustutatakse. Kui see konks juhtub, soovite luua teenuse abonendi kaudu.

Registri, abonentide ja teenuste kasutamine WordPressis

Lee Campbelli foto saidil Unsplash

Näiteks:

Pange tähele, et tellija on teenusest teadlik (kuigi ta ei sõltu sellest, kuna see on lihtsalt vahendaja WordPressi ja teenuse vahel) ja määrab teenuse konksu, mida see käivitab.

Teenused

Lõpuks on teenused objektid, kes teevad pistikprogrammis kogu raske tõstmise. See tähendab, et kui neil on vaja lugeda või kirjutada andmebaasi, failisüsteemi, võrku, töödelda andmeid jne, toimub see kõik nende kontekstis.

Registri, abonentide ja teenuste kasutamine WordPressis

Erik Mcleani foto saidil Unsplash

Nad võivad olla teistest klassidest teadlikud, aga mitte. Nad võivad rakendada liidest või abstraktset klassi või mitte. See on tõesti väljaspool selle postituse ulatust. Asi on aga selles, et kasutades ülaltoodud konksu näitena, kui soovite midagi teha, kui kasutaja kustutatakse, siis teete seda teenuse sees.

Näiteks:

class DeletedUserService { public function add(string $hook) { add_action($hook, [$this, 'deletedUser'], 99, 1); } public function deletedUser(int $userId) { $user = get_userdata($userId); if (false === $user) { return; } // Do work with the user that's being deleted. } }

Ja sellega asi lõppes. Kui teenus töötab, tagastatakse juhtimine WordPressile ja rakendus jätkab täitmist nagu tavaliselt.

Kõik koos nüüd

Eeldades, et teie pistikprogrammi jaoks on alglaadimisfail, mida enamik teeb, kuna see on koht, kus nõutav pistikprogramm on määratletud, on vaja automaatlaadurit ja toimub pistikprogrammi enda käivitamine.

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem