Een blik op de WordPress HTTP API een praktisch voorbeeld van wp_remote_post

In het vorige artikel hebben we de vorige artikelen met betrekking tot GET-verzoeken, de native PHP-faciliteiten voor het maken van verzoeken en WordPress beoordeeld wp_remote_post API-functie samen met de argumenten die het biedt.

In dit artikel gaan we gebruik maken van wp_remote_post zodanig dat we het feitelijk in actie kunnen zien. Vergeet niet dat dit - zoals wp_remote_post - is onderdeel van de HTTP API waarvan er andere de moeite waard zijn om te evalueren.

Maar voor nu gaan we zetten wp_remote_post werken.

Concreet gaan we het volgende doen:

  • Wanneer de pagina wordt geladen, zullen we wat informatie naar een aangepast script verzenden
  • Het script zal de informatie onderzoeken en terugsturen naar onze pagina
  • We zullen dan de gegevens op de pagina weergeven

Natuurlijk, het is een beetje een gekunsteld voorbeeld, maar het geeft ons de ervaring van het maken van een afzonderlijk PHP-script dat kan worden gebruikt voor bewerkingen die worden geactiveerd door het gebruik van wp_remote_post.

Hoe dan ook, voor de doeleinden van dit voorbeeld gaan we de PHP gebruiken $ _SERVER verzamelen om te loggen wanneer de gebruiker zijn voorkeur heeft verzonden in plaats van dat hij moet inloggen.

Ten slotte zal de broncode beschikbaar worden gemaakt op GitHub en toegankelijk zijn aan het einde van deze serie in het volgende artikel.

Laten we voorlopig beginnen met werken aan de plug-in.


Uitweg uit de klas

Als je de afgelopen maanden een van mijn artikelen hebt gevolgd, weet je dat ik een fan ben van het singleton-patroon en dat ik meestal dezelfde standaard gebruik om mijn plug-ins te bouwen.

Om dat te bereiken, zal veel hiervan repetitief zijn - dat is oké, voor nu. De bedrijfslogica - of kernlogica - van de plug-in is wat er zal veranderen, dus houd het in de gaten.

Bereid de plugin voor

In uw wp-content / plugins map, maak een map aan genaamd wp-remote-post-voorbeeld omdat dit de naam is van onze plug-in. Daarna alle volgende bestanden:

  • wp-afstand na example.php
  • class-wp-remote-post-example.php
  • wp-remote-receiver.php

In wp-afstand na example.php, voeg de volgende code toe:

 wp_remote_post. * Versie: 1.0.0 * Auteur: Tom McFarlin * URI van de auteur: http://tommcfarlin.com * Licentie: GPL-2.0 + * Licentie-URI: http://www.gnu.org/licenses/gpl-2.0.txt * / // Als dit bestand direct wordt aangeroepen, wordt afgebroken. if (! defined ('WPINC')) die;  require_once (plugin_dir_path (__FILE__). 'class-wp-remote-post.php'); WP_Remote_Post_Example :: get_instance (); "

Dan in class-wp-remote-post-example.php voeg de volgende code toe:

  

Voeg ten slotte de volgende regel toe aan wp-remote-receiver.php:

 De postgegevens"; echo"
    "; foreach ($ _POST als $ key => $ value) echo"
  • ". $ key.": ". $ value."
  • "; echo"
"; echo"

U kunt deze informatie nu opslaan of negeren,

";"

Merk op dat we door de lijst van itereren $ _POST gegevens en weergeven in een lijstindeling die het gemakkelijk te lezen maakt.

Merk op dat omwille van de ruimte, ik code-opmerkingen achterlaat uit deze specifieke plug-in. Het downloadbare bestand op GitHub zal volledig gedocumenteerd zijn en zal ook beschikbaar zijn in het volgende bericht.

Op dit punt zou je de plug-in moeten kunnen activeren; er zal echter niets gebeuren bij activering dan dat een succesvol bericht wordt weergegeven.

Dit is goed!

Ontvang de aanvraaginformatie

Laten we op dit punt de informatie verzamelen die we als onderdeel van het verzoek willen verzenden. Specifiek, laten we het volgende krijgen:

  • Het unieke adres van de bezoeker
  • Het adres van de startpagina voor de blog
  • Het adres van de pagina die wordt bezocht

Voeg de volgende regel toe aan de constructor (de private __constructfunctie, dat is - niet het publiek get_instance functie):

 add_action ('the_content', array ($ this, 'get_post_response'));

Voeg vervolgens de volgende functie aan de klas toe:

 openbare functie increment_visitor_count ($ content) if (is_single ()) $ unique_id = $ _SERVER ['REMOTE_ADDR']; $ site_url = site_url (); $ page_url = get_permalink ();  retourneer $ inhoud; 

Hier pakken we de unieke ID van de REMOTE_ADDR index van de $ _SERVER verzamelen, we pakken de site-URL zoals gedefinieerd door WordPress, en dan bewaren we de permalink van de huidige pagina in zijn eigen variabele.

Maak het verzoek

Op dit moment zijn we klaar om het verzoek te doen. Bedenk uit het vorige artikel dat er verschillende gegevens zijn die we nodig hebben om met het verzoek mee te sturen:

  • De URL
  • De inhoud van de hoofdtekst (die we gebruiken als de unieke ID, het adres en de pagina die wordt bekeken

Makkelijk genoeg, toch?

Dus laten we doorgaan met het bijwerken van onze functie hierboven met het volgende codeblok, zodat de functie er nu als volgt uitziet:

 openbare functie increment_visitor_count ($ content) 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'); $ response = wp_remote_post ($ url, array ('body' => array ('unique-id' => $ unique_id, 'address' => $ site_url, 'page-viewed' => $ page_url)));  retourneer $ inhoud; 

Op dit punt zou je in staat moeten zijn om de pagina opnieuw te laden, hoewel je niet per se iets zult zien gebeuren.

Zelfs nog, het is niets te gecompliceerd, toch??

Geef het resultaat weer

Op dit moment, aangenomen dat alles correct is aangesloten, kunnen we nu de resultaten weergeven.

Om dit te doen, moeten we eerst controleren of er een fout bestaat en vervolgens een bericht weergeven als dat zo is; anders zullen we de resultaten van het postverzoek weergeven.

Voeg de volgende voorwaardelijke functie toe aan de bovenstaande functie direct onder de wp_remote_post bellen:

 if (is_wp_error ($ response)) $ html = '
'; $ html. = __ ('Er was een probleem bij het ophalen van het antwoord van de server.', 'wprp-voorbeeld'); $ html. = '
'; else $ html = '
'; $ html. = '

'. __ ('Uw bericht gepost met succes! De reactie was als volgt:', 'wprp-voorbeeld'). '

'; $ html. = '

'. $ antwoord ['lichaam']. '

'; $ html. = '
'; $ inhoud. = $ html;

Merk op dat we ervoor kiezen om HTML toe te voegen op basis van het antwoord dat onderaan het bericht wordt weergegeven.


De huidige werkende versie

Op dit punt zou de huidige werkende versie van de plug-in er als volgt uit moeten zien:

  array ('unique-id' => $ unique_id, 'address' => $ site_url, 'page-viewed' => $ page_url))); if (is_wp_error ($ response)) $ html = '
'; $ html. = __ ('Er was een probleem bij het ophalen van het antwoord van de server.', 'wprp-voorbeeld'); $ html. = '
'; else $ html = '
'; $ html. = '

'. __ ('Uw bericht gepost met succes! De reactie was als volgt:', 'wprp-voorbeeld'). '

'; $ html. = '

'. $ antwoord ['lichaam']. '

'; $ html. = '
'; $ inhoud. = $ html; retourneer $ inhoud;

In de volgende en laatste post in deze serie zullen we proberen de informatie die aan de onderkant van de post is toegevoegd een beetje netter te laten lijken door het gebruik van LESS voor CSS om er enige ervaring mee op te doen en om de verbetering van de hoe de plug-in eruitziet.

We zorgen er ook voor dat de plug-in volledig gedocumenteerd is en beschikbaar is op GitHub voor verdere beoordeling.

Tot die tijd sleutelen aan wat we hier besproken hebben en we zullen meer moeten delen in het laatste artikel.