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:
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.
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.
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:
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"
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!
Laten we op dit punt de informatie verzamelen die we als onderdeel van het verzoek willen verzenden. Specifiek, laten we het volgende krijgen:
Voeg de volgende regel toe aan de constructor (de private __construct
functie, 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.
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:
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??
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. = ''; $ inhoud. = $ html;'. __ ('Uw bericht gepost met succes! De reactie was als volgt:', 'wprp-voorbeeld'). '
'; $ html. = ''. $ antwoord ['lichaam']. '
'; $ html. = '
Merk op dat we ervoor kiezen om HTML toe te voegen op basis van het antwoord dat onderaan het bericht wordt weergegeven.
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. = ''; $ inhoud. = $ html; retourneer $ inhoud;'. __ ('Uw bericht gepost met succes! De reactie was als volgt:', 'wprp-voorbeeld'). '
'; $ html. = ''. $ antwoord ['lichaam']. '
'; $ html. = '
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.