Hjemmeside » WordPress » Slik bruker du WordPress Action Hooks i Theme Customization

    Slik bruker du WordPress Action Hooks i Theme Customization

    WordPress barn temaer gir en relativt enkel måte å tilpasse utseendet på et tema. Hvis temaets alternativer ikke gir deg tilstrekkelige designvalg, kan du bare legge til en ny regel for barntemaets standard stilarkfil som heter style.css. Men hva skjer når du også vil endre temaets funksjonalitet? Det er et av tilfellene når WordPress-handlinger kommer til din hjelp.

    WordPress har blitt så populært blant annet på grunn av sin høye tilpassbarhet. WordPress Core er lastet med forskjellige kroker som gjør at utviklere kan endre eller forbedre standardfunksjonaliteten. Videre har vi lov til å inkludere tilpassede kroker i våre temaer og plugins til hjelpe andre utviklere å enkelt tilpasse vår kode til deres behov.

    Om WordPress kroker

    WordPress-kroker virker noe ligner på virkelige kroker i den forstand at du kan fange fisken du vil ha på rett sted hvis du bruker dem riktig.

    Du kan fjern en fanget funksjon (for eksempel kan du fjerne WordPress administrasjonslinjen for brukere med lavt nivå), kan du la det være intakt og forbedre den med din egen funksjonalitet (for eksempel kan du legge til flere menyer eller widgetområder til et tema), eller du kan overstyr det (for eksempel kan du endre oppførselen til en kjernefunksjon).

    Det finnes to forskjellige slags kroker i WordPress: handlinger og filtre. I dette innlegget vil vi se på hvordan vi kan gjøre bruk av handlingskroker i tema tilpasning.

    Hvordan WordPress-kroker fungerer

    Å bruke et veldig enkelt språk, handlinger angi det Det har skjedd noe under WordPress-livssyklusen: visse deler av nettstedet har blitt lastet inn, visse alternativer eller innstillinger er konfigurert, plugins eller widgets er blitt initialisert, og så videre.

    filtre er forskjellig fra handlinger i deres natur. De er vant til send data gjennom, og endre, administrere eller avskjære det før du gjør det til skjermen eller lagrer brukerdata i databasen.

    Ved hvert vesentlig landemerke i WordPress-livssyklusen finnes det enten en handling eller a filter krok som vi kan legg til vår egendefinerte kode for å endre standard oppførsel til våre behov.

    De enkelte handlinger og filtre som kjører under en forespørsel, avhenger av hvilken side som ble forespurt av brukeragenten: for eksempel i en enkelt innleggsforespørsel er kroker knyttet til enkelt innlegg tilgjengelig, men kroker knyttet til andre deler av nettstedet (f.eks. Administrasjonsområdet) er ikke.

    Finn Handling Kroker

    Handlingsreferansen til WordPress Codex gir en detaljert oversikt over handlingene som går gjennom ulike forespørsler. Det viktigste er at hvis vi ønsker å utføre en oppgave, må vi krok til rett sted, ikke før eller etter det, ellers vil handlingen ikke bli fullført.

    Så for eksempel hvis vi vil legg til vår Google Analytics-kode til et nettsted vi må Kryss vår handling rett før bunnteksten er lastet.

    Hvis vi snakker om tema tilpasning, kan action kroker komme fra to forskjellige steder: fra WordPress Core og selve temaet. Det er temaer som ikke har kroker i det hele tatt, men andre gir utviklere med noen eller mange - det er alltid temaforfatterens valg. Standard Twenty Fifteen Theme har bare en handlingskrok for footer-tilpasning under navnet "twentyfifteen_credits".

    Hvis du liker å bla gjennom kildekoden, kan du også lett finne handlingskroker. Handlingskroker legges til koden med do_action () WordPress-funksjonen.

    Hvis du kjører et raskt søk etter uttrykket 'do_action' i en mer avansert kodeditor - som jeg gjorde i Eclipse nedenfor - kan du se en liste over stedene hvor du kan hekte din tilpassede funksjonalitet i kjernen. Jeg søkte i / Wp-includes / mappe, men du kan også kjøre et søk etter / Wp-admin / mappe som inneholder handlingen kroker relatert til WordPress dashboard (admin area).

    Det gode er at navnene på handlingene er vanligvis ganske selvforklarende, men det er Vanligvis en fin kommentar inne i koden som kan gi deg mer kunnskap om at den gjeldende handlingen krok er bra for grunnen du vil bruke den til.

    For eksempel sier koden kommentaren før 'widgets_init' handlingskrok det “branner etter at alle standard WordPress-widgets er registrert”. Hvis du tar en titt på koden før denne handlingen krok, kan du finne alle standard WP widgets initialisering før det - slik at du kan være sikker på at kommentaren ikke lyver, og hvis du vil registrere din egen tilpassede widget, Dette vil være det rette stedet.

    I mange tilfeller gir kildekoden oss mye mer informasjon enn Codex, så det kan være en god ide å lære å navigere raskt i det.

    Legg til dine egne handlinger

    Når du vil legge til din egen handling, må du Lag en tilpasset funksjon og bind denne funksjonen til en bestemt handlingskrog ved hjelp av add_action () WordPress-funksjonen. Tilpassede handlinger lagt til med add_action () -funksjonen er vanligvis utløst på stedet når kjernen kaller den aktuelle do_action () -funksjonen.

    La oss se et enkelt eksempel.

    Slik finner du handlingen du trenger

    La oss si at du vil legge til din egendefinerte favicon til nettstedet ditt. Først må du finne den rette handlingen krok du kan binde din egen funksjonalitet til.

    La oss tenke. Hvis du vil legge til et favicon til en vanlig HTML-side, hvor vil du sette den? Selvfølgelig må du plassere den inne i del av HTML-filen med følgende oppsummering:

      

    Så handlingen kroken du trenger må være relatert til lastingen av seksjon.

    (1) Åpne handlingsreferansen, og se hva den har å tilby. Vi er heldige, som om vi blar gjennom handlingene, kan vi bare finne en, wp_head, at basert på navnet sitt har muligheten til å være relatert til lastingen av seksjon.

    (2) For å være sikker, la oss sjekk dokumentasjonen i WordPress Codex. Codex anbefaler det “du bruker denne kroken ved å ha funksjonen din ekko-utgang til nettleseren”, så nå synes det å være perfekt for oss. Men la oss sjekke det i kildekoden.

    (3) Siden denne kroken ikke er relatert til administrasjonsområdet, må vi kjøre vårt søk i / Wp-includes / mappe. Hvis vi søker etter ordet "wp-head", får vi mange resultater da denne spesifikke handlingen brukes av WP Core mange ganger.

    Vi må lete etter stedet der det blir definert, så søk etter uttrykket do_action ('wp_head'. Merk at vi ikke fullførte parentesene, siden vi ikke kan være sikker på om denne handlingen har parametere eller ikke.

    Eclipse returnerer bare ett resultat som finnes i /wp-includes/general-template.php fil. Kommentaren før handlingen krok definisjonen sier at det “skriver ut skript eller data i hodetiketten på forsiden”, så nå kan vi være døde på det wp_head er handlingen kroken vi trenger.

    Kontrollerer for parametere

    Når du legger til dine egne handlinger, må du også være sikker på om kroken du vil bruke, tar parametere eller ikke. Du kan enkelt finne ut dette ved å se på do_action () -funksjonen.

    Syntaxen for funksjonen do_action () er følgende:

     do_action ('name_of_action' [, $ parameter1, $ parameter2, ...]) 

    Bare navnet på handlingen er nødvendig, parametrene er valgfrie. Hvis du finner argumenter i det aktuelle anropet av funksjonen do_action (), må du inkludere dem i erklæringen av den egendefinerte funksjonen du lager.

    Hvis du ikke finner noen, må din tilpassede funksjon fungere uten argumenter. I do_action () -definisjonen for wp_head action hook er det ingen parametere.

    La oss sammenligne det med en handlingskrok som tar en parameter. Handlingen krok kalt 'wp_register_sidebar_widget' tar en parameter som du alltid må passere til den egendefinerte funksjonen du binder til kroken.

    La oss se forskjellen i do_action () syntaksen til de to sakene:

     do_action ('wp_head'); do_action ('wp_register_sidebar_widget', $ widget);

    I det første tilfellet er det ingen parameter, så den tilpassede funksjonen vil bruke følgende syntaks:

     funksjon my_function_without_parameters () ... 

    I andre tilfelle er det en parameter som du alltid må passere som et argument i erklæringen av din egendefinerte funksjon:

     funksjon my_function_with_parameters ($ widget) ... 

    Slik kobler du til din egendefinerte funksjon

    Nå vet vi alt vi trenger. La oss lage vår egendefinerte funksjon som vil vise et favicon på nettstedet vårt.

    Først opprett en ny funksjon uten noen argumenter, bind deretter den til wp_head action hook med hjelp av add_action () WordPress-funksjonen.

     funksjon custom_add_favicon () echo '';  add_action ('wp_head', 'custom_add_favicon');

    Du trenger å send navnet av handlingen krok til add_action () -funksjonen som et argument først, da må du Legg til navnet på din egendefinerte funksjon.

    Dette er de to nødvendige parametrene for add_action (). Den har to valgfrie parametere også, prioritet og aksepterte argumenter. La oss se hvordan du bruker disse.

    Definer prioriteringer

    Det skjer i mange tilfeller at det er mer enn en handling bundet til samme krok. Så hvilken vil bli utført først? Det er her vi kan bruke $ prioritet valgfri parameter av add_action () -funksjonen.

    Vi legger til prioritet som et positivt heltall, Standardverdien er 10. Hvis vi vil ha en handling som skal utføres tidlig, gir vi den en lavere verdi, hvis vi vil at den skal utføres senere, gir vi den en høyere verdi.

    Så hvis vi tror at faviconet må være der tidlig, kan vi forbedre vår tidligere add_action () samtale på følgende måte:

     add_action ('wp_head', 'custom_add_favicon', 5); 

    Vær oppmerksom på at prioriteringene alltid må være sett relativt til de andre tilpassede funksjonene som bruker den samme handlingen krok.

    Legg til antall aksepterte argumenter

    Du må legge til antall aksepterte argumenter hvis du bruker en handlingskrok som tar parametere. La oss se eksemplet vi brukte før.

    Handlingskroken 'wp_register_sidebar_widget' tar en parameter, så når vi binder vår egendefinerte funksjon til denne kroken, må vi også inkludere dette som et argument når vi kaller funksjonen add_action ().

    Vår kode i dette tilfellet vil se slik ut:

     funksjon my_sidebar_widget_function ($ widget) // Din kode add_action ('wp_register_sidebar_widget', 'my_sidebar_widget_function', 10, 1); 

    Legg merke til at vi må Legg også til prioritet (vi valgte standard 10 her) for å sikre at WordPress vet hva hver parameter betyr. Hvis vi utelatt prioriteten, kan WordPress anta at 1 er prioritet som ikke er sant, da det indikerer antall aksepterte argumenter.

    Konklusjon

    Du kan lage mange eksperimenter med handlingskroker i tema tilpasning. For eksempel kan du legge til egendefinerte skript (JS) og stiler (CSS) med wp_enqueue_scripts action hook, eller Google Analytics-koden din med wp_footer action hook.

    Du kan ikke bare legg til dine egne handlinger, men du kan også fjern komplette funksjoner fra WordPress-kjerne ved bruk av remove_action () -funksjonen som bruker samme logikk som add_action ().

    Hvis du er en temaforfatter, og du vil gjøre et utvidbart tema, kan det være en god ide å legg til dine egne tilpassede handlingskroker til de aktuelle malfilene med funksjonen do_action ().

    Hvis du vil gjøre det, Tenk nøye om parametere som andre utviklere hvem vil bruke temaet ditt må passere som argumenter når de vil koble inn sine tilpassede funksjoner.

    Mens du utformer plasseringene til temaet ditt, er det ikke nødvendig å glemme det Det gir ikke mye mening å inkludere egendefinerte tema kroker på de samme stedene hvor WordPress Core selv har sine egne kroker.