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:
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.
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.
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:
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 "
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!
À ce stade, rassemblons les informations que nous souhaitons envoyer dans le cadre de la demande. Plus précisément, obtenons ce qui suit:
Ajouter la ligne suivante dans le constructeur (le privé __construction
fonction, 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.
À 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:
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?
À 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. = ''; $ content. = $ html;'. __ ('Votre message a été posté avec succès! La réponse a été la suivante:', 'wprp-example'). '
'; $ html. = ''. $ response ['body']. '
'; $ html. = '
Notez que nous choisissons d’ajouter du code HTML en fonction de la réponse affichée au bas de la publication..
À 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. = ''; $ content. = $ html; return $ content;'. __ ('Votre message a été posté avec succès! La réponse a été la suivante:', 'wprp-example'). '
'; $ html. = ''. $ response ['body']. '
'; $ html. = '
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.