Un aperçu de l'API HTTP WordPress un exemple pratique de wp_remote_post

Dans l'article précédent, nous avons examiné les articles précédents concernant les demandes GET, les installations PHP natives pour effectuer des demandes, et examiné WordPress. wp_remote_post Fonction API avec les arguments qu'elle offre.

Dans cet article, nous allons utiliser wp_remote_post de telle sorte que nous pouvons réellement le voir en action. Rappelez-vous que ceci - comme wp_remote_post - fait partie de l'API HTTP dont il existe d'autres fonctions qui méritent d'être examinées.

Mais, pour l'instant, nous allons mettre wp_remote_post travailler.

Plus précisément, nous allons faire ce qui suit:

  • Lorsque la page se charge, nous allons soumettre des informations à un script personnalisé
  • Le script examinera les informations et les retournera à notre page
  • Nous afficherons ensuite les données sur la page

Bien sûr, il s’agit d’un exemple un peu artificiel, mais il nous permettra de créer un script PHP distinct qui peut être utilisé pour des opérations déclenchées par l’utilisation de wp_remote_post.

Quoi qu’il en soit, pour les besoins de cet exemple, nous allons utiliser PHP $ _SERVER collection à enregistrer lorsque l'utilisateur a indiqué sa préférence plutôt que d'exiger qu'il soit connecté.

Enfin, le code source sera disponible sur GitHub et accessible à la fin de cette série dans l'article suivant.

Pour l'instant cependant, commençons par travailler sur le plugin.


Stubbing Out la classe

Si vous avez suivi l'un de mes articles au cours des derniers mois, sachez que je suis un fan du modèle singleton et que j'utilise généralement le même support pour la construction de mes plugins..

À cette fin, beaucoup de choses seront répétitives - ça va, pour le moment. La logique métier - ou la logique de base - du plugin est ce qui va changer, alors restez à l'écoute.

Préparer le plugin

Dans ton wp-content / plugins répertoire, créez un répertoire appelé wp-remote-post-example comme ce sera le nom de notre plugin. Après cela, tous les fichiers suivants:

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

Dans wp-remote-post-example.php, ajoutez le code suivant:

 wp_remote_post. * Version: 1.0.0 * Auteur: Tom McFarlin * URI de l'auteur: http://tommcfarlin.com * Licence: GPL-2.0 + * URI de la licence: http://www.gnu.org/licenses/gpl-2.0.txt * / // Si ce fichier est appelé directement, annulez. if (! define ('WPINC'))) die;  require_once (plugin_dir_path (__FILE__). 'class-wp-remote-post.php'); WP_Remote_Post_Example :: get_instance (); "

Puis dans class-wp-remote-post-example.php ajoutez le code suivant:

  

Enfin, ajoutez la ligne suivante à wp-remote-receiver.php:

 Les données postales"; écho "
    "; foreach ($ _POST as $ key => $ valeur) echo"
  • ". $ key.": ". $ value."
  • "; écho "
"; écho "

Vous pouvez maintenant sauvegarder ou ignorer ces informations,

";"

Notez que nous allons parcourir la liste des $ _POST données et affichage dans un format de liste facilitant la lecture.

Notez que pour des raisons d'espace, je laisse les commentaires de code en dehors de ce plugin. Le fichier téléchargeable sur GitHub sera entièrement documenté et sera également disponible dans le prochain article..

À ce stade, vous devriez pouvoir activer le plugin. cependant, rien ne se passera réellement lors de l'activation en plus de voir un message réussi.

C'est bon!

Obtenir les informations de demande

À ce stade, rassemblons les informations que nous souhaitons envoyer dans le cadre de la demande. Plus précisément, obtenons ce qui suit:

  • L'adresse unique du visiteur
  • L'adresse de la page d'accueil du blog
  • L'adresse de la page visitée

Ajouter la ligne suivante dans le constructeur (le privé __constructionfonction, c'est - ne pas le public get_instance une fonction):

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

Ensuite, ajoutez la fonction suivante à la classe:

 fonction publique increment_visitor_count ($ content) if (is_single ()) $ unique_id = $ _SERVER ['REMOTE_ADDR']; $ site_url = site_url (); $ page_url = get_permalink ();  return $ content; 

Ici, nous prenons l'identifiant unique du REMOTE_ADDR index de la $ _SERVER collection, nous saisissons l’URL du site telle que définie par WordPress, puis nous stockons le permalien de la page en cours dans sa propre variable.

Faire la demande

À ce stade, nous sommes prêts à faire la demande. Rappelez-vous de l'article précédent qu'il y a plusieurs éléments d'information que nous devons envoyer avec la demande:

  • L'URL
  • Le contenu du corps (que nous utiliserons comme identifiant unique, adresse et page visualisée)

Assez facile, à droite?

Continuons donc à mettre à jour notre fonction ci-dessus avec le bloc de code suivant afin que la fonction ressemble maintenant à ceci:

 fonction publique 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 visualisée' => $ page_url)));  return $ content; 

À ce stade, vous devriez pouvoir recharger la page sans que rien ne se passe nécessairement..

Même encore, ce n'est rien aussi compliqué, droit?

Afficher le résultat

À ce stade, en supposant que tout est câblé correctement, nous pouvons maintenant afficher les résultats.

Pour ce faire, nous devons d'abord vérifier si une erreur existe, puis afficher un message si tel est le cas. sinon, nous afficherons les résultats de la demande de publication.

Ajoutez la condition suivante à la fonction ci-dessus directement sous le wp_remote_post appel:

 if (is_wp_error ($ response)) $ html = '
'; $ html. = __ ('Un problème est survenu lors de l'extraction de la réponse du serveur.', 'wprp-example'); $ html. = '
'; else $ html = '
'; $ html. = '

'. __ ('Votre message a été posté avec succès! La réponse a été la suivante:', 'wprp-example'). '

'; $ html. = '

'. $ response ['body']. '

'; $ html. = '
'; $ content. = $ html;

Notez que nous choisissons d’ajouter du code HTML en fonction de la réponse affichée au bas de la publication..


La version de travail actuelle

À ce stade, la version de travail actuelle du plugin devrait ressembler à ceci:

  array ('unique-id' => $ unique_id, 'adresse' => $ site_url, 'page visualisée' => $ page_url))); if (is_wp_error ($ response)) $ html = '
'; $ html. = __ ('Un problème est survenu lors de l'extraction de la réponse du serveur.', 'wprp-example'); $ html. = '
'; else $ html = '
'; $ html. = '

'. __ ('Votre message a été posté avec succès! La réponse a été la suivante:', 'wprp-example'). '

'; $ html. = '

'. $ response ['body']. '

'; $ html. = '
'; $ content. = $ html; return $ content;

Dans le prochain et dernier article de cette série, nous travaillerons à rendre les informations annexées au bas de l'article plus lisibles grâce à l'utilisation de LESS pour CSS simplement pour en acquérir une certaine expérience et continuer à améliorer la la façon dont le plugin ressemble.

Nous nous assurerons également que le plugin est entièrement documenté et disponible sur GitHub pour un examen ultérieur..

Jusque-là, bricolez avec ce que nous avons couvert ici et nous aurons plus à partager dans le dernier article.