WordPress for webapputvikling hendelser, handlinger og filtre

Gjennom hele denne serien har vi tatt en titt på hvordan WordPress kan brukes til å bygge webapplikasjoner.

Frem til dette punktet har vi oppdaget at WordPress er et fundament - snarere enn et rammeverk - og vi har snakket litt om hvordan vi trenger å unngå å prøve å skoenhorns WordPress inn i en annen type mønster enn den av den opprinnelige typen.

Til dette formål har vi oppdaget at WordPress bruker et hendelse-drevet designmønster, og at dette er best representert med sitt system av handlinger og filtre.

Selv om den overordnede hensikten med denne serien er å gi en oversikt over hvordan WordPress kan brukes til webapplikasjonsutvikling, synes jeg det er viktig å ta en titt på noen praktiske eksempler på hvor kraftig kroksystemet egentlig er for å forstå akkurat hvordan mye vi - som utviklere - kan tilpasse WordPress for å passe våre behov.

Så i denne artikkelen skal vi se på noen kode som representerer noen vanlige handlinger som kan oppnås ved hjelp av WordPress-kroker, samt noen litt ikke-standardfunksjonalitet.

Til slutt, ved slutten av artikkelen, bør du ha en klar forståelse av hvorfor å utnytte den hendelsesdrevne naturen til WordPress er nøkkelen i bygningsapplikasjoner, og hvorfor vi ikke bør prøve å gjøre WordPress og dets underliggende mønstre til noe de er ikke.


Kroker: Handlinger og Filtre

I forrige artikkel ga vi to definisjoner - en spesifikk for handlinger og en spesielt for kroker:

Handlinger er hendelser i WordPress-sidens livssyklus når visse ting har oppstått - visse ressurser er lastet, enkelte fasiliteter er tilgjengelige, og avhengig av hvor tidlig handlingen har skjedd, har noen ting ennå ikke lastet inn.

Filtre er funksjoner som WordPress passerer data gjennom under visse punkter i sidens livssyklus. De er primært ansvarlige for å avskjære, administrere og returnere data før de gjøres til nettleseren eller lagrer data fra nettleseren til databasen.

Dette er nøkkelen til å forstå de to typer WordPress-hendelser fordi det kommer til å være tider hvor du vil forutse en prosess, følge opp en prosess eller manipulere informasjon før du gjør det til skjermen.

Å vite forskjellen i handlinger og filtre er nøkkelen i bygningsapplikasjoner, plugins og temaer i WordPress.

Til dette formål skal vi sette på pause diskusjonen om Hvorfor WordPress kan brukes til webapplikasjoner, og ta et praktisk blikk på flere handlinger og filtre for å sikre at vi alle forstår hvordan hendelsessystemet fungerer, hvilke ting vi kan gjøre med det, og forhåpentligvis få kreativitet som strømmer til hvordan Disse kan brukes til å skape en mer tilpasset opplevelse.

Vanlige handlinger

Først tar vi en titt på flere handlinger som hver øker kompleksiteten fra den forrige for å bidra til å demonstrere hvor kraftige handlinger kan bli.

1. Legge til en JavaScript-fil i overskriften

Denne handlingen er så vanlig at det sannsynligvis rote blant selv de mest mellomliggende utviklerne. Likevel gjenstår punktet: Dette er et eksempel på en klassisk WordPress-handling som brukes i nesten alle typer temaer som er der ute.

Kort sagt, det drar nytte av wp_enqueue_scripts kroken. Dette brenner under siden lastesekvensen og lar deg fortelle WordPress hvilke kildefiler den skal inneholde, så vel som hvor den bør inkludere den (som i, i overskriften eller bunnteksten).

funksjon example_add_theme_scripts () wp_enqueue_script ('re-example-script', get_stylesheet_directory_uri (). '/js/example.js', array ('jquery'), '1.0.0', FALSE);  add_action ('wp_enqueue_scripts', 're_add_theme_scripts');

Dette er lett nok til å forstå, riktig?

Ta tak i skriptet i temaet example.js fil fra JavaScript-katalogen, sørg for at den er merket som avhengig av at jQuery blir lastet først, merk at det er versjon 1.0.0 av skriptet, og vi gjør det ikke vil laste den i bunnteksten.

2. Tilpasse Les mer link

Utenfor boksen gir WordPress muligheten til å legge til en "Les mer ..." eller en "Fortsett å lese ..." -link som er oppnådd ved å bruke tag i postredigeringsprogrammet.

Du kan stile den ved hjelp av innfødte stiler, men la oss si at du vil legge til ekstra kode som gjør at den passer inn mer pent med temaet ditt, være enklere å integrere med en responsiv design eller noe lignende.

Du kan deretter bruke følgende handling:

funksjon example_add_more_link_class ($ link, $ text) $ html = '
'; $ html. = '
'. $ link. '
'; $ html. = '
'; returner $ html; add_action ('the_content_more_link', 'example_add_more_link_class', 10, 2);

Legg merke til at vi knytter oss til the_content_more_link som aksepterer ankeret og teksten til ankeret for den mer lenken.

Innenfor funksjonen vikler vi selve linken i egen div container slik at vi kan ha større kontroll over styling lenken.

3. Hent en persons navn via Ajax

Dette bestemte eksemplet forutsetter at du bruker Ajax i prosjektet ditt og at du allerede har opprettet de riktige fasilitetene for å sikre at du kan lage asynkrone forespørsler.

Dette forutsetter også at dataene som sendes fra klientsiden til server-siden, er IDen til en bruker for hvem du vil returnere navnet hans.

funksjon example_get_user_name () $ user = null; hvis (isset ($ _GET ['user_id']) && 0 < strlen( trim( $_GET['user_id'] ) ) )  $user = get_user_by( 'id', $_GET['user_id'] ); if ( FALSE == $user )  echo $user->fornavn;  ellers echo '-1';  // ende hvis dø;  // end re_get_employee_by_name add_action ('wp_ajax_example_get_user_name', 'example_get_user_name'); add_action ('wp_ajax_nopriv_example_get_user_name', 'example_get_user_name');

Så i eksemplet ovenfor kontrollerer vi først for å sikre at bruker-ID er satt i $ _GET samling, og i så fall vil det forsøke å hente brukeren fra den aktuelle ID-en.

Hvis brukeren eksisterer, vil den ekko brukerens fornavn tilbake til klienten; ellers vil det ekko et "-1'. Dette gir oss fleksibiliteten til å svare på kundens side.

Vanlige filtre

Akkurat som vi gjorde med de nevnte handlingene, tar vi en titt på flere filtre som hver vil øke litt i kompleksitet, slik at vi kan se noen av de tingene vi kan gjøre med filtre som gir oss større fleksibilitet innenfor våre WordPress-prosjekter.

1. Legge til innhold til et enkelt innlegg

Selv om tittelen på denne handlingen skal være klar nok, la oss si at du vil legge til en setning nederst i hvert innlegg på bloggen din, men du bare ønsker å gjøre det på enkelte innlegg.

Dette kan oppnås med følgende kode:

funksjon example_append_post_content ($ content) if (is_single ()) $ html = '
'; $ html. = 'Dette innholdet vil vises på slutten av et innlegg.'; $ html. = '
'; $ content. = $ html; returner $ innhold add_filter ('the_content', 'example_append_post_content');

Dette er lett nok til å forstå, riktig?

innholdet filteret passerer det faktiske innholdet i innlegget til den hekta funksjonen. Derfra kan vi manipulere dataene på en måte som vi ser hensiktsmessig.

I vårt tilfelle kontrollerer vi først for å se om det er en enkelt side. Hvis så, da legger vi til en post-suffiks beholder med en enkelt setning, legg den til innholdet, og send den deretter tilbake.

Hvis det ikke er et enkelt innlegg, vil innholdet bli returnert som normalt.

2. Omdirigere brukere etter å logge inn

En annen type filter som du kanskje vil dra nytte av, er omdirigering av brukere etter at de har logget på programmet.

For eksempel, kanskje hvis de er en administrator, bør de bli sendt til postdashbordet; ellers bør de omdirigeres til hjemmesiden til nettstedet.

For å oppnå dette kan vi dra nytte av login_redirect filter:

funksjon example_login_redirect ($ redirect_to, $ request, $ user) return (isset ($ user-> roller) && is_array ($ user-> roller) && in_array ('administrator', $ user-> roller))? home_url ('/ wp-admin /'): home_url ();  // end soi_login_redirect add_filter ('login_redirect', 'example_login_redirect', 10, 3);

I koden ovenfor har vi gitt et tilpasset filter til login_redirect krok som utfører følgende:

  • Hvis brukeren er administrator, kan du omdirigere dem til oversikten
  • Ellers rett dem til HOME_URL av nettstedet.

Lett nok.

Selv om det er et relativt enkelt eksempel, bør det få deg til å tenke på flere av de avanserte tingene du kan gjøre basert på brukerens roller og / eller evner.

For eksempel, i stedet for bare å omdirigere dem til visse aspekter av søknaden, kan du vise dem ulike deler av informasjon basert på, si, deres roller.

3. Tilpasse e-post

Dette bestemte eksemplet er litt mer komplisert fordi add_filter samtaler kommer i sammenheng med en annen funksjon som har en tredjepartsoppringer.

Spesielt skal vi sende en e-post, men vi vil sørge for at vi har tilpasset innholdstypen, innholdet og navnet fra før du sender innholdet.

For å gjøre dette må vi først definere en funksjon:

funksjon example_exmail_user ($ input) // Kode fjernet fra korthet. // Anta $ melding er definert som innholdet i e-post add_filter ('wp_mail_content_type', create_function ("," return "tekst / html"; ")); add_filter ('wp_mail_from', 'example_mail_from'); add_filter ('wp_mail_from_name ',' example_mail_from_name '); hvis (wp_mail ($ input [' email-adresse '],' Din konto er blitt opprettet! ', $ melding)) // Omdirigere hjemmet wp_redirect (home_url ()); else  // Angi en side som skal ledes av en feil exit; funksjon example_mail_from ($ email) return '[email protected]'; funksjon example_mail_from_name ($ name) return "Eksempel webapp";

Deretter må vi definere funksjoner som er koblet til filteret som er spesifisert ovenfor. Nemlig ...

  • wp_mail_content_type
  • wp_mail_from
  • wp_mail_from_name

Som du kan se, kan filtre bli komplisert relativt raskt, men de er kraftig og hvis du forstår hva du gjør, og hvordan alle stykkene passer sammen, så å si, så kan du virkelig gjøre noen fantastiske ting.


Bare skrape overflaten

Som med de fleste opplæringsprogrammer og eksempler på dette nettstedet, skraper vi bare overflaten på det som kan gjøres ved hjelp av WordPress-kroksystemet.

Selvfølgelig er disse eksemplene ment å være nettopp det - eksempler på hvor kraftige handlinger og filtre kan være når det gjelder å tilpasse WordPress-opplevelsen.

Selv om denne artikkelen og eksempelkoden er ment å tjene som et praktisk eksempel på noen av tingene du kan gjøre, er de ikke ment å være den endelige veiledningen for å arbeide med kroker.

I stedet er de ment å vise hvordan vi kan begynne å utnytte hva som er tilgjengelig i WordPress API når du bygger et webprogram.


Neste…

I neste artikkel skal vi begynne å se på flere fasiliteter som tilbys av WordPress rett ut av boksen. Vi ser hvordan de er nyttige for å bygge webapplikasjoner, hvordan de kan utnytte dem for vårt spesifikke arbeid, og hvordan de kan være nyttige for å bygge webapplikasjoner.

Deretter vil vi se på hvor mange av disse funksjonene som fungerer bra i sammenheng med et webprogram, og hvordan vi kan bruke kroker for å tilpasse oppførselen som de gir videre.