Un aperçu de l'API HTTP WordPress Enregistrement de données depuis wp_remote_post

Dans le post précédent de la série, nous avons commencé à travailler sur un petit plugin offrant un exemple pratique de wp_remote_post. Le problème est que l'exemple était incomplet.

Bien sûr, il est agréable de voir comment passer un appel en utilisant la fonction et même comment configurer un script chargé de recevoir les données et de les renvoyer, mais cela ne sert à rien si nous ne faisons rien avec..

Dans ce dernier article de la série, nous allons revisiter le plugin que nous avons commencé avec le dernier article et commencer à l'améliorer un peu.

Plus précisément, nous allons…

  • Passez en revue ce que nous avons fait
  • Commencez à apporter des modifications au travail que nous avons créé dans le dernier article.
  • Modélisez la présentation avec LESS afin de mettre à jour certaines de nos nouvelles compétences.
  • Examiner les arguments acceptés par les deux wp_remote_get et wp_remote_post

Enfin, tous les travaux réalisés dans cet article seront disponibles sur GitHub et liés dans la conclusion de l'article. Mais avant cela, allons-y et commençons.


Ce que nous avons fait

Dans l'article précédent, nous avons configuré un plugin de base permettant d'afficher des informations sur le visiteur du site Web actuel:


Un exemple de données wp_remote_post

En utilisant les informations disponibles sur le serveur, nous pouvons afficher l'ID du visiteur, l'adresse vers laquelle il a navigué et la page visualisée..

Truc facile, à droite?

Afin de rendre le code plus lisible, maintenable et capable d'être stylisé, il y a quelques choses que nous devons faire. Mais d’abord, si vous en êtes à ce stade, consultez l’article précédent, implémentez le code source, puis revenez à cet article..


Le récepteur à distance revisité

Rappel de l'article précédent, nous avons introduit un fichier appelé wp-remote-receive.php qui était responsable de saisir des informations à partir de PHP $ _POST la collecte et la création d'une vue plus conviviale qu'un simple vidage des données.

Plus précisément, voici le code avec lequel nous travaillions:

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

Vous pouvez maintenant sauvegarder ou ignorer ces informations,

";

Mais nettoyons cela un peu. Plutôt que de faire écho à plusieurs instructions, construisons une chaîne unique de HTML, puis renvoyons-la. De plus, nous fournirons des éléments supplémentaires et des noms de classes qui faciliteront l’accès via CSS:

 '; $ html. = '

Les données postales

'; $ html. = '
    '; foreach ($ _POST as $ key => $ valeur) $ html. = '
  • '. Clé $. ':'. valeur de $. '
  • '; // end foreach $ html. = '
'; $ html. = '
'; // Enfin, renvoyer le code HTML au demandeur echo $ html;

Rien de trop compliqué. En bref, nous avons ajouté un wrapper avec un identifiant unique, puis nous avons tout placé dans ledit wrapper. Nous avons également supprimé la phrase sur la possibilité de sauvegarder les informations..

Affichez la page de votre navigateur pour vérifier que toutes les choses se ressemblent. À ce stade, il ne devrait y avoir aucune différence avec la capture d'écran ci-dessus.

Si oui, révisez votre code.


Ajouter du style

Avant de passer à la sérialisation de ces informations, continuons en les stylant telles qu'elles sont fournies par le récepteur..

Pour ce faire, créons un css répertoire à la racine du répertoire du plugin. Nous allons aussi créer un Moins sous-répertoire dans lequel notre plugin LESS résidera. Je vais appeler le dossier display.less comme il est habitué, vous savez, style l'affichage :).


Préparation du répertoire LESS

Ensuite, nous allons ajouter le répertoire complet du plugin à CodeKit. Si vous ne savez pas comment faire cela, veuillez lire cette série..

À ce stade, nous sommes prêts à écrire un peu de MOINS pour donner à notre plugin une présentation légèrement meilleure.

Ajoutez le code suivant à votre fichier LESS:

 # wp-remote-post-example-container background: # f7f5e7; bordure: 1px solide # ac0404; rembourrage: 20px; h4 marge: 0;  // h4 ul li type-liste-style: cercle;  // li // ul // / # wp-remote-post-example-container

CodeKit (ou le compilateur LESS si vous choisissez cette voie) devrait générer le code CSS approprié. Ensuite, nous devons demander à notre plugin de charger le nouveau fichier CSS. Pour ce faire, ajoutez la ligne de code suivante à votre constructeur:

 add_action ('wp_enqueue_scripts', array ($ this, 'add_style_sheet'));

Ajoutez ensuite la fonction suivante à votre classe:

 fonction publique add_style_sheet () wp_enqueue_style ('wp-remote-post-example-style', plugins_url ('wp-remote-post-example / css / display.css'));  // fin de add_style_seet

Enfin, rechargez un seul post et votre page devrait ressembler à ceci:

Exemple de message à distance WP avec style

Semble assez bon, non? Bien sûr, vous pouvez le personnaliser comme vous le souhaitez, mais voici l'exemple avec lequel nous allons aux fins de cet article..


Sauvegarde des données de post

Enfin, nous sommes prêts à réellement faire quelque chose avec ces données.

Maintenant, nous allons définir une fonction qui prend une réponse du wp-remote-receiver.php et effectivement le sauvegarder dans les méta-données postales, mais seulement s'il n'existe pas déjà.

Plus précisément, voici ce que nous ferons:

  • Utiliser l'identifiant unique comme clé
  • Si l'adresse existe pour l'ID unique, nous ne ferons rien
  • Sinon, nous enregistrerons également l'adresse et la page consultée

Pour cela, commençons par définir une fonction qui fera exactement cela. Notez qu'il acceptera un ID unique qui correspondra à l'adresse IP que nous voyons ci-dessus, ainsi qu'à l'URL du site et à la page..

 fonction privée save_post_data ($ unique_id, $ site_url, $ page_url) if ("== get_post_meta (get_the_ID (), 'unique_id', true)) add_post_meta (get_the_ID (), 'unique_id', $ unique_id) (), 'site_url', $ site_url); add_post_meta (get_the_ID (), 'page_url', $ page_url); // end if

Sur la base des exigences énumérées ci-dessus pour la fonction, nous ne sauvegarderons les données de cet article que si rien n'existe pour l'adresse IP donnée..

À ce stade, nous devons juste apporter une modification mineure à notre get_post_response une fonction. Mettez à jour le conditionnel pour qu'il appelle la fonction que nous avons définie ci-dessus:

 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. = '
'; $ this-> save_post_data ($ unique_id, $ site_url, $ page_url);

Et c'est tout!


Conclusion

Le plugin final est disponible pour examen et téléchargement sur GitHub. Il inclut également la documentation de chaque fonction incluse dans le plug-in, ainsi qu'un fichier README afin que vous puissiez suivre tout ce qui a été inclus ici..

Notez que si vous êtes intéressé par les arguments wp_remote_post accepte, consultez le précédent article dans lequel nous avons traité de cela lorsque nous en parlons. wp_remote_get.

Enfin, cela ne fait qu'effleurer la surface de ce qui est possible avec l'API HTTP. Espérons que cette série a permis de fournir une solide introduction à l’API et a ouvert la voie à de futurs travaux avec l’API..