I den forrige artikkelen har vi gjennomgått de forrige artiklene om GET-forespørsler, de innfødte PHP-fasilitetene for å stille forespørsler og gjennomgått WordPress wp_remote_post
API-funksjonen sammen med argumentene som den tilbyr.
I denne artikkelen skal vi gjøre bruk av wp_remote_post
slik at vi faktisk kan se den i aksjon. Husk at dette - som wp_remote_post
- er en del av HTTP API, som det er andre funksjoner verdt å vurdere.
Men for nå skal vi sette wp_remote_post
å jobbe.
Spesielt skal vi gjøre følgende:
Visst, det er litt av et utprøvd eksempel, men det vil gi oss opplevelsen av å lage et eget PHP-skript som kan brukes til operasjoner utløst av bruk av wp_remote_post
.
Uansett, i dette eksemplet skal vi bruke PHP $ _SERVER
samling for å logge når brukeren har lagt inn sin preferanse i stedet for å kreve at de har logget inn.
Til slutt vil kildekoden bli gjort tilgjengelig på GitHub og tilgjengelig i slutten av denne serien i følgende artikkel.
For nå, men la oss begynne med å jobbe med plugin.
Hvis du har fulgt noen av artiklene mine de siste månedene, vet du at jeg er fan av singleton-mønsteret, og at jeg vanligvis bruker samme boilerplate for å bygge mine plugins.
For det formål vil mye av dette bli repeterende - det er greit, for nå. Forretningslogikken - eller kjernelogikken - av plugin er hva som vil forandre seg, så hold deg oppdatert.
I din wp-innhold / tillegg katalog, opprett en katalog som heter wp-fjernetter f.eks som dette vil være navnet på pluginet vårt. Etter det, alle følgende filer:
I wp-ekstern-post-example.php, legg til følgende kode:
wp_remote_post. * Versjon: 1.0.0 * Forfatter: Tom McFarlin * Forfatter URI: http://tommcfarlin.com * Lisens: GPL-2.0 + * Lisens URI: http://www.gnu.org/licenses/gpl-2.0.txt * / // Hvis denne filen kalles direkte, avbryt. hvis (! definert ('WPINC')) die; require_once (plugin_dir_path (__FILE__). 'class-wp-remote-post.php'); WP_Remote_Post_Example :: get_instance (); "
Så, i class-wp-remote-post-example.php legg til følgende kode:
Til slutt legger du til følgende linje til wp-fjern receiver.php:
Postdataene"; ekko "
Du kan nå lagre eller ignorere denne informasjonen,
";"Legg merke til at vi skal være iterating gjennom listen over $ _POST
data og vise det i et listformat som gjør det enkelt å lese.
Vær oppmerksom på at jeg, for å få rom, forlater kodekommentarer ut av dette pluginet. Den nedlastbare filen på GitHub vil bli fullt dokumentert og vil også være tilgjengelig i neste innlegg.
På dette tidspunktet bør du kunne aktivere pluginet; Imidlertid vil ingenting faktisk skje ved aktivering i tillegg til å se en vellykket melding.
Dette er bra!
På dette tidspunkt, la oss samle informasjonen vi vil sende som en del av forespørselen. Spesielt, la oss få følgende:
Legg til følgende linje i konstruktøren (den private __construct
funksjon, det vil si - ikke offentligheten get_instance
funksjon):
add_action ('the_content', array ($ this, 'get_post_response'));
Deretter legger du til følgende funksjon i klassen:
offentlig funksjon increment_visitor_count ($ innhold) if (is_single ()) $ unique_id = $ _SERVER ['REMOTE_ADDR']; $ site_url = site_url (); $ page_url = get_permalink (); returner $ innhold
Her tar vi den unike IDen fra REMOTE_ADDR
indeks av $ _SERVER
samling tar vi webadressen til webområdet som definert av WordPress, og vi lagrer permalinken til gjeldende side i sin egen variabel.
På dette tidspunktet er vi klare til å gjøre forespørselen. Husk fra forrige artikkel at det er flere opplysninger du må sende sammen med forespørselen:
Lett nok, rett?
Så la oss fortsette å oppdatere vår funksjon ovenfor med følgende kodenavn slik at funksjonen nå ser slik ut:
offentlig funksjon increment_visitor_count ($ innhold) if (is_single ()) $ unique_id = $ _SERVER ['REMOTE_ADDR']; $ site_url = site_url (); $ page_url = get_permalink (); $ url = plugins_url ('wp-remote-post-example / wp-remote-receiver.php'); $ respons = wp_remote_post ($ url, array ('body' => array ('unikt id' => $ unique_id, 'adresse' => $ site_url, 'page-viewed' => $ side_url))); returner $ innhold
På dette tidspunktet bør du kunne laste på siden, selv om du ikke nødvendigvis vil se noe som skjer.
Likevel er det ingenting også komplisert, rett?
På dette tidspunktet antas at alt er koblet til riktig, nå kan vi vise resultatene.
For å gjøre dette må vi først sjekke for å se om det finnes en feil, og vis en melding hvis det er det; Ellers vil vi vise resultatene av etterspørselen.
Legg til følgende betinget av funksjonen ovenfor direkte under wp_remote_post
anrop:
hvis (is_wp_error ($ response)) $ html = ''; $ html. = __ ('Det oppstod et problem å hente svaret fra serveren.', 'wprp-example'); $ html. = ''; ellers $ html = ''; $ html. = ''; $ content. = $ html;'. __ ('Din melding postet med suksess! Svaret var som følger:', 'wprp-example'). '
'; $ html. = ''. $ respons ['body']. '
'; $ html. = '
Vær oppmerksom på at vi velger å legge til noen HTML basert på svaret som vises nederst i innlegget.
På dette tidspunktet bør den nåværende arbeidsversjonen av pluginet se slik ut:
array ('unique-id' => $ unique_id, 'adresse' => $ site_url, 'page-viewed' => $ side_url))); hvis (is_wp_error ($ response)) $ html = ''; $ html. = __ ('Det oppstod et problem å hente svaret fra serveren.', 'wprp-example'); $ html. = ''; ellers $ html = ''; $ html. = ''; $ content. = $ html; returner $ innhold'. __ ('Din melding postet med suksess! Svaret var som følger:', 'wprp-example'). '
'; $ html. = ''. $ respons ['body']. '
'; $ html. = '
I neste og siste innlegg i denne serien vil vi jobbe med å gjøre informasjonen som følger med på bunnen av innlegget, se litt nyere gjennom bruk av LESS for CSS bare for å få litt erfaring med det, og for å fortsette å forbedre måten plugin ser ut.
Vi vil også sørge for at pluginet er fullt dokumentert og tilgjengelig på GitHub for videre gjennomgang.
Inntil da tinker rundt med det vi har dekket her, og vi vil ha mer å dele i den endelige artikkelen.