WordPress Initialization Kroker Fordeler og vanlige feil

I programmeringen er initialisering av data viktig som det er der vi konfigurerer forutsetningene for programmet, for eksempel dets attributter, dets nødvendige filer og data, dets tilkobling til databasen og så videre.

WordPress selv har en veldefinert initialiseringsprosedyre. Gjennom sidens livssyklus brenner WordPress en rekke handlinger, hvorav mange vi har dekket i tidligere artikler. I den forbindelse gir den et sett med initialiseringskroker som naturlig brukes til å initialisere applikasjonen før den utfører sin primære funksjonalitet.

Som plugin og temautviklere er det viktig å forstå brukssaken og Vanlige feil i disse initialiseringskrokene, for å bygge kvalitetsapplikasjoner.

I denne artikkelen skal vi se på viktigheten av WordPress-initialiseringskroker og hvordan de brukes i ulike scenarier.


Introduksjon til initialiseringskroker

WordPress tilbyr et bredt spekter av kroker som kan brukes i plugin og tema utvikling.

I en typisk sideforespørsel blir alle handlingskrokene utført i en bestemt rekkefølge. Spesielt blir alle kroker kjørt etter at kjerneordet WordPress-applikasjonen fullfører sin lasteprosess.

Så initialisering kroker er hovedsakelig vant til, du gjettet det, initialisere prosessen i plugins og temaer. La oss ta en titt på tilgjengelige i det kroker i WordPress, i rekkefølge av deres henrettelse:

  • i det kjører etter at WordPress er ferdig med å laste, men før noen overskrifter sendes. Vanligvis brukes dette av plugins for å initialisere prosessen.
  • widgets_init brukes til å registrere sidebar widgets av programmet. De register_widgetfunksjonen utføres innenfor denne kroken.
  • admin_init utføres som den første handlingen, når brukeren får tilgang til administrasjonen av WordPress. Vanligvis brukes det til å initialisere innstillinger som er spesifikke for administrasjonsområdet.
Bortsett fra disse tre krokene, er det en annen krok kalt admin_bar_init, som utføres etter at administrasjonslinjen er initialisert. WordPress Codex gir ikke en forklaring på denne kroken, og ikke mange plugins bruker denne kroken.

Du kan også se gjennom hele prosessprosessen for WordPress-handling i Codex.

WordPress kjører hver krok i en bestemt rekkefølge (som du kan se i Codex). Som sådan er det viktig å vurdere rekkefølgen av forekomsten ved å bruke hver handlingskrog. Vurder følgende scenarier for å identifisere forskjellene.

Definere admin_init Inne i i det Hook

Om nødvendig kan vi definere WordPress-kroker i andre kroker. I en typisk forespørsel, i det krok løper før admin_init kroken. Så la oss prøve å skrive ut noe ved å plassere admin_init inne i i det krok:

 add_action ('init', 'test_init'); funksjon test_init () add_action ('admin_init', 'test_admin_init');  funksjon test_admin_init () echo "Admin Init Inside Init"; 

Etter at du har kjørt denne koden, vil vi få ønsket utgang ved hjelp av ekko uttalelse.

Definere i det Inne i admin_init Hook

La oss se koden og utgangen av dette scenariet der en tidligere krok er definert inne i en krok som kommer senere i rekkefølge av utførelse.

 add_action ('admin_init', 'test_admin_init'); funksjon test_admin_init () add_action ('init', 'test_init');  funksjon test_init () echo "Init Inside Admin Init"; 

Her får vi ikke noe output - dette er forventet - fordi i det krok kjører før admin_init krok, og dermed er den ikke tilgjengelig etter definisjonen av admin_init krok.

Som du kan se, er det viktig å forstå utførelsesprosedyren for kroker for å bygge vellykkede plugins. Ordre av forekomst er viktig for alle kroker i WordPress.


Utforsker The i det og admin_init kroker

Blant init kroker, i det og admin_init er verdt å utforske da disse to krokene brukes mye i mange plugins. Bruk av andre initialiseringskroker er rett frem i forhold til disse to krokene.

Som sådan skal vi se på funksjonaliteten til i det og admin_init kroker.

De i det krok utføres i hver forespørsel for både Frontend på WordPress-siden og baksiden.

De admin_init kroken utføres etter Administrasjonsdelen fullfører sin lasteprosess. Så denne kroken utfører også på hver admin side forespørsel. Brukere må være logget inn for å dra nytte av denne kroken.

Siden begge disse krokene blir utført på hver forespørsel, må vi planlegge funksjonalitetene i gjennomføringen av disse krokene, da det kan påvirke ytelsen til nettstedet sterkt..

Hvordan å bruke i det kroker

Vanligvis er initialiseringskroker tilgjengelige i de fleste av de eksisterende WordPress-pluginene, og de er viktige for å håndtere behandlingen.

WordPress definerer ikke hva vi skal og hva vi ikke bør inkludere; Derfor kan utviklere gjøre mindre feil som igjen kan resultere i en stor ytelsesreduksjon. I denne delen skal vi se på hvordan vi effektivt kan bruke begge i det og admin_init kroker.

La oss ta en titt på de beste metodene ved bruk av init kroker.

De i det krok

  • Registrering av egendefinerte innleggstyper - WordPress anbefaler bruk av i det krok for registrering av nye egendefinerte innleggstyper.
  • Initialiserer pluginkonfigurasjonene og innstillingene dine - Plugin konfigurasjoner og innstillinger må defineres i hver forespørsel og derfor er det en god praksis å inkludere dem inne i denne kroken.
  • Tilgang til brukerens innsendte data (Bruke $ _GET og $ _POST) - Vi kan fange opp innleverte data uten handlinger, men det anbefales at du bruker i det krok da det garanterer utførelsen i hver forespørsel.
  • Legge til nye omskrivningsregler - Vi kan definere nye omskrivningsregler ved hjelp av i det krok, men husk at disse nye reglene bare får virkning når vi spyler omskrivningsregler.
  • Legg til eller fjern tilpassede handlinger - Plugins inneholder mange tilpassede handlinger for å utvide funksjonaliteten. Det blir scenarier der vi må legge til nye tilpassede handlinger, samt fjerne eksisterende. I slike tilfeller er det viktig å gjennomføre disse aktivitetene innenfor i det krok.
  • Legg inn plugin-tekstdomener - WordPress tilbyr flerspråklig støtte, og dermed har vi lov til å laste filen som inneholder de oversatte strengene. Dette bør også plasseres inne i i det krok.

De admin_init krok

  • Adgangskontroll - Det er viktig å sjekke tillatelsene til innloggede brukere før hver bruker får tilgang til et bestemt sett med funksjoner eller funksjonalitet. admin_init er den første tiltak som kjører i administrasjonsområdet, slik at vi kan bruke den til å administrere tilgangskontroll.
  • Legge til nye innstillinger - Vi kan bruke denne kroken til å legge til nye innstillingssider eller innstillinger i det eksisterende WordPress-innstillingspanelet.

Det er mange andre mulige implementeringer med disse krokene, men disse funksjonene har sine egne kroker, og det er ikke nødvendig å bruke initialiseringskrokene.

Vanlige feil ved bruk av initialiseringskroker

Ofte finner vi scenarier hvor utviklere misforstår bruken av initialiseringskrokene. Feil bruk av nevnte kroker kan føre til alvorlige ytelsesproblemer (i tillegg til lavkvalitets plugins).

La oss identifisere de vanlige feilene og hvordan du unngår dem:

  • Spyling omskrivning regler - Dette er en ressursintensiv operasjon der alle omskrivningsregler blir spylt og omorganisert for å legge til nytt og fjerne unødvendige regler. Mange utviklere spyler rewrites regler inni i det handlinger og ende opp med å skape unødvendig ytelse overhead i hver forespørsel. Vi bør sette opp en måte å manuelt spyle omskrivningsreglene ved hjelp av en knapp eller spyl reglene for sjeldne aktiviteter, for eksempel lagring av plugininnstillinger.
  • Tilgang til databasen - Det er et must for å få tilgang til databasen for å gi ulike funksjoner, men det er viktig å forhindre unødvendige databasesamtaler inne i initialiseringskroker som det blir utført på hver forespørsel. For det formål er det ideelt å tilordne databasekroker i funksjonsspesifikke kroker for å unngå større ytelsesoverhead.
  • Utfør oppgraderingsrutiner - Plugins må ha en oppgraderingsrutine for å oppgradere funksjoner for nye versjoner. Vanligvis bruker utviklere init-kroker for å sjekke pluginversjoner og innstillinger før du utfører oppgraderingsprosessen. Vi kan la brukerne oppgradere plugin ved å gi en tilpasset skjerm i stedet for automatisk å sjekke på hver forespørsel.
  • Bruke init kroker i stedet for funksjonalitet spesifikke kroker - Dette er den vanligste feilen som mange utviklere gjør. Det finnes et bredt utvalg av kroker i WordPress som målretter mot forskjellig, unik funksjonalitet. Det er viktig å bruke funksjonalitetsspesifikke kroker for å unngå konflikter og gjøre koden utvidbar. Kroker som i det og admin_init kan brukes i stedet for bestemte kroker, slik at utviklere har en tendens til å bruke dem uten å ha kunnskap om full effekt. Noen av de vanlige scenariene hvor utviklere bruker i det og admin_init kroker i stedet for de anbefalte krokene er som følger:
    • admin_menu - Vi kan legge til menysider ved hjelp av add_menu_page funksjon. Det anbefales å bruke admin_menu krok for å opprette admin sider. Men mange utviklere bruker admin_init krok som den er henrettet etter admin_menu krok.
    • wp_enqueue_scripts - Anbefalt måte å legge til stiler og skript er å bruke wp_enqueue_scripts kroken. Men mange utviklere bruker wp_enqueue_script inne i i det krok for å laste inn skript og stiler.

Det er mange lignende situasjoner hvor utviklere bruker felles init hook i stedet for funksjonalitet bestemt krok, og det bør forebygges når det er mulig.


Flytter fremover med initialiseringskroker

WordPress initialisering kroker spiller en viktig rolle i plugin og tema utvikling. Mange utviklere misbruker kroker som skaper unødvendig ytelse overhead. I denne artikkelen diskuterte vi riktig bruk av disse krokene, samt vanlige feil og hvordan du kan unngå dem.

Nå kan vi bruke samme teknikk for å plugge spesifikke tilpassede kroker. Mange avanserte plugins bruker sine egne handlingskroker for å gjøre dem utvidbare. For slike plugins kan vi definere plugin-spesifikke init kroker for å la utviklere fokusere på initialiseringsoppgaver på forhåndsdefinerte kroker istedenfor å bruke dem over alt.

Ta gjerne del i dine erfaringer med riktig bruk av init kroker, samt feil i bruk av initialisering kroker. Ser frem til å se hva du må dele i kommentarene!