Forstå WordPress Pluggable Funksjoner og deres bruk

WordPress gir en samling av kjernefunksjoner kalt pluggable funksjoner. Som navnet antyder, kan vi plugge inn tilpasset kode til disse funksjonene for å overstyre og forbedre funksjonaliteten i henhold til våre krav.

Den virkelige kraften til pluggbare funksjoner kommer med muligheten til å erklære egendefinerte funksjoner og gjøre dem pluggbare for andre utviklere og designere. Det er en mye brukt teknikk for å utvide funksjonaliteten og funksjonene til WordPress Child Themes.

Gjennom hele denne artikkelen skal vi utforske konseptet om pluggbare funksjoner og deres bruk.


Bruke Pluggable Funksjoner i WordPress Core

Pluggbare funksjoner i WordPress-kjerne er plassert i pluggable.php fil inne i wp-inkluderer katalogen. Du finner den komplette listen over pluggbare funksjoner under Pluggable Functions i WordPress Codex. Først vil jeg vise deg en liste over pluggbare funksjoner som kan brukes på nesten hver WordPress-nettside.

  • wp_logout - brukes til å logge brukeren ut av systemet. Du kan utføre oppgaver som å fjerne tilpassede øktvariabler og registrere brukerens øktid til databasen ved å skrive en egendefinert wp_logout funksjon.
  • wp_mail - er den mest populære pluggable funksjonen til dem alle. Du kan endre denne funksjonen til å bruke en spesiell e-postmal for dine e-postadresser eller andre e-post-sendingsrelaterte egenskaper.
  • wp_new_user_notification - kan brukes til å tilpasse formatet til e-post som sendes like etter at en ny bruker er registrert i systemet.
  • auth_redirect - brukes til å omdirigere en bruker til påloggingssiden dersom brukeren ikke allerede er innlogget. Du kan bruke denne funksjonen til å vise en melding til brukeren som nevner at brukeren skal autentiseres for å få tilgang til den forespurte siden.
  • wp_password_change_notification - Brukes til å sende en e-post når passordet blir endret. Du kan legge til tilleggsinformasjon til denne e-posten ved hjelp av denne funksjonen.

La oss nå se hvordan vi kan koble en tilpasset funksjon til en av de ovennevnte funksjonene. Jeg skal bruke wp_logout her. Først må du åpne pluggable.php fil og kopier innholdet i wp_logout funksjon. Deretter oppretter du en ny funksjon i filen med samme navn og inkluderer koden. Følgende er standardfunksjonen for wp_logout:

 hvis (! function_exists ('wp_logout')) / ** * Logg inn den nåværende brukeren ut. * * @Since 2.5.0 * / funksjon wp_logout () wp_clear_auth_cookie (); do_action ('wp_logout'); 

La oss nå se på den overstyrte versjonen av wp_logout funksjon:

 hvis (! function_exists ('wp_logout')) / ** * Logg inn den nåværende brukeren ut. * * @Since 2.5.0 * / funksjon wp_logout () remove_sessions (); // Tilpasset funksjonsoppringing wp_clear_auth_cookie (); do_action ('wp_logout');  funksjon remove_sessions () // Fjern tilpasset økt og informasjon om informasjonskapsel

Du kan se at jeg har endret wp_logout funksjon i pluginet mitt og lagt til litt egendefinert kode. Dette er prosessen du må følge for å overstyre en pluggbar funksjon.

Det viktigste i koden ovenfor er hvis (! function_exists ('wp_logout')) linje definert øverst. Denne linjen gjør funksjonen din pluggbar ved å sjekke om en funksjon kalles wp_logout eksisterer og laster den egendefinerte funksjonen. Ellers vil den laste standardfunksjonen i pluggable.php.

Du lurer kanskje på hvorfor funksjonen i plugin blir kalt i stedet for standard en selv når begge funksjonene er prefixed med function_exists ( 'wp_logout') tilstand. Det skyldes WordPress-handlingens utførelsesrekkefølge, som jeg skal forklare senere.

Er det mulig å hoppe over function_exists Sjekk etter egendefinerte funksjoner?

Ja det er mulig. Men du vil få problemer i følgende to scenarier hvis du utelater sjekken.

  • Plugin aktivering - Når du tilsidesetter en pluggbar funksjon inne i et plugin uten sjekken og forsøker å aktivere funksjonen, vil det generere en feil som nevner "Kan ikke omklare wp_logout ()". Hvis du fjerner sjekken etter aktiveringen, vil den fungere skikkelig.
  • Dupliser funksjonen i et annet plugin - Det er en mulighet for at en annen pluginforfatter overstyrer samme funksjon uten tilstandskontroll. I slike tilfeller vil det være en konflikt siden begge funksjonene vil være i samme navn og dermed generere en feil.

Risikoen her er at alle kan overstyre din funksjon uten din kunnskap. Jeg tror du bør alltid ha tilstandskontrollen før funksjonen for å unngå konflikter.

Nå vet du hvordan du skal arbeide med pluggable funksjoner. Så la oss se hvor vi kan plassere de pluggbare funksjonene.


Pluggable Funksjon Utførelse Prosess

Jeg har sett mange utviklere, inkludert pluggbare funksjoner i functions.php fil av et tema og ikke får de resultatene de forventer. Du bør ha en ordentlig kunnskap om WordPress-handlingens utførelsesordre før du lager pluggbare funksjoner.

Du finner fullstendig utførelsesprosedyre under Handlingsreferanse i WordPress Codex. Jeg vil trekke ut de nødvendige tiltakene for mine forklaringer på skjermen nedenfor.

Ovenstående bilde viser den generelle WordPress-handlingens utførelsesprosess. Det kan variere på typen funksjonalitet som brukes i pluginet ditt, og disse handlingene kan bli kalt flere ganger under en forespørsel.

Du bør tydeligvis se at "må bruke" plugins er lastet først, etterfulgt av aktive plugins og pluggable funksjoner. Endelig er temaet lastet. Så i henhold til prosessen kan vi gjøre følgende konklusjoner om å skape pluggbare funksjoner.

  • Alle de tilpassede pluggable funksjonene skal plasseres i plugins, siden plugins er lastet først.
  • Hvis plugins ikke inneholder pluggbare funksjoner, vil standard kjernefunksjon bli brukt.
  • Du bør ikke være overordnet kjernepluggbare funksjoner i temafilene dine, siden temaene er lastet etter pluggbare funksjoner. Derfor vil standardfunksjonen bli brukt.

Nå vet du hvor du skal sette dine pluggbare funksjoner. Neste spørsmål vil være hva som skjer når to eller flere plugins overstyre den samme kjernefunksjonen. Det er utenfor kontrollen din siden det første aktiverte pluginet vil få preferansen over andre. Så hvis en annen plugin er aktivert før plugin-modulen din, vil den pluggbare funksjonen ikke bli brukt.

Du kan vise den aktive plugin-rekkefølgen ved å bruke verdien av active_plugins tast inn WordPress-alternativtabellen.


Betydningen av Pluggable Funksjoner

Overordnede kjernepluggbare funksjoner gjør det mulig for oss å utvide standardfunksjonaliteten og dermed meget nyttig i visse scenarier. Men den virkelige verdien av pluggable funksjoner kommer inn når du lager dine egne pluggbare funksjoner. Disse funksjonene vil ikke ha noen sammenheng med kjernefunksjonene.

Vanligvis er nye pluggbare funksjoner definert i WordPress-temaene for å forlenge funksjonaliteten og tillate at barnetemautviklere overstyrer dem. Så la oss se hvordan vi kan definere egendefinerte pluggbare funksjoner.


Opprette egendefinerte pluggbare funksjoner

Først må du opprette funksjonen med en eksistenskontroll som vi gjorde med kjernefunksjoner. Følgende kode viser en prøvepluggbar funksjon for temaet ditt:

 hvis (! function_exists ('change_header')) function change_header () // Kode for endring av tema header

Tidligere nevnte jeg ikke å lage pluggbare funksjoner i temafiler på grunn av avhengighet med standard pluggable funksjoner. I dette scenariet lager vi nye pluggbare funksjoner, og derfor vil det ikke være noen avhengigheter. Så handlingsprosessen vil ikke ha en effekt generelt.


Når skal du bruke Pluggable Funksjoner?

Vi lager barn temaer for å tillate utviklere og designere å utvide design og funksjoner i foreldetemaet uten å endre kildekoden til det opprinnelige temaet. Den grunnleggende formen for å utvide kan gis ved å duplisere CSS av foreldetemaet i barnetemaet og gjøre nødvendige tilpasninger.

Bortsett fra CSS-stiler kan temaer inneholde nyttige funksjoner som kortkoder, sidemaler og tilpassede filtre for å gi designelementer. Som temautviklere trenger vi å gi maksimal kapasitet til barntemautviklere. Vi kan effektivt bruke pluggbare funksjoner for å tillate barnetemautviklere å endre disse funksjonalitetene.

Pluggbare funksjoner i temaer utvides vanligvis av barnetemautviklere. Men pluginutviklere kan også utvide de pluggbare funksjonene i pluginene sine. Anta at du har tilsidesatt den pluggbare funksjonen i både barnetema og plugin. I slike tilfeller vil plugin-funksjoner ha forrang i forhold til barnets temafunksjoner.

Så sørg for å konvertere dine eksisterende temafunksjoner til pluggbare funksjoner når det er nødvendig for å tillate maksimal utvidelsesevne.


Sammendrag

WordPress Pluggable Funksjoner-konseptet lar deg forlenge funksjonaliteten til dine temaer og plugins. Generelt er det å foretrekke å overstyre WordPress-kjernepluggbare funksjoner i plugins og dine egne pluggbare funksjoner i temaer. Sørg for å få en skikkelig forståelse av WordPress-handlingens kjøringssekvens før du lager pluggbare funksjoner for å unngå konflikter.