Travailler avec l'API HTTP WordPress

By | janvier 21, 2020

WordPress pas cher

Cet article explique comment utiliser l'API HTTP de WordPress, un ensemble de fonctions PHP à partir de la bibliothèque de fonctions de WordPress, pour effectuer des requêtes HTTP distantes vers des ressources externes, telles que les API JSON REST.

Nous utilisons l'API HTTP WordPress lorsque nous voulons accéder à des ressources distantes – ressources non présentes sur le site WordPress à partir duquel nous travaillons – ce qui pourrait être tout ce que vous pouvez imaginer, des données auxquelles nous accédons via les API de Facebook ou Twitter aux informations météorologiques publiées par le gouvernement agences. Nous faisons ces requêtes à distance en utilisant les fonctions de l'API HTTP de WordPress, en particulier wp_remote_get (), wp_remote_post (), et wp_remote_head ().

Nous sommes fiers de vous présenter cet article comme un exemple de chapitre de notre guide complet «apprendre le développement WordPress» Opérationnel, maintenant dans sa 3e édition révisée et étendue.

Si vous aimez ce chapitre, consultez Opérationnel. Il y a environ 40 chapitres supplémentaires d'où celui-ci est issu. C'est le meilleur guide pour le développement de WordPress.

Envie d'apprendre le développement WordPress?

Opérationnel est notre cours complet "apprendre le développement WordPress". Maintenant dans sa troisième édition mise à jour et étendue, il a aidé des centaines d'acheteurs satisfaits à apprendre le développement WordPress de manière rapide, intelligente et approfondie.

"Je pense que toute personne intéressée par le développement de WordPress a besoin de ce cours.

Avant d'acheter Up and Running, je m'étais appris du code WordPress, mais je manquais de direction. Regarder les vidéos du cours était comme un tas de lumières allumées.

Je suis passé d'une familiarité vague avec le fonctionnement des thèmes, des fonctions et de WordPress à leur maîtrise. Tout est devenu beaucoup plus clair.

Je recommande très volontiers ce cours à quiconque veut écouter. "

–Jason Robie, développeur WordPress

Passez à l'étape suivante de votre parcours de développement WordPress!


Points clés à retenir:

  • L'API WordPress HTTP simplifie la création requêtes HTTP distantes: demandes d'informations qui renvoient (et peuvent également modifier) ​​le contenu d'une page Web à l'aide du protocole HTTP (HyperText Transfer Protocol), le moyen de communication fondamental sur Internet.
  • le wp_remote_get (), wp_remote_post (), et wp_remote_head () fonctions font AVOIR, PUBLIER, et TÊTE demandes, respectivement. wp_remote_request () peut faire toutes les formes de requêtes HTTP.
  • Les réponses HTTP reçues à la suite de requêtes HTTP sont ensuite traitées par les fonctions du gestionnaire de réponses. Fonctions de gestionnaire préécrites, telles que wp_remote_retrieve_body () et wp_remote_retrieve_header (), simplifie considérablement l'analyse de nombreuses réponses.

De temps en temps, vous devrez appeler des ressources distantes, des ressources sur des sites autres que le vôtre. Une façon courante de le faire est de faire Demandes HTTP pour les informations dont vous avez besoin. Ce chapitre explique HTTP et explore l'API HTTP de WordPress.

Comprendre HTTP

Le Web fonctionne via HTTP: HyperText Transfer Protocol. HTTP est un «protocole», un style établi, de demandes et réponses entre ordinateurs. C’est ainsi que deux ordinateurs se «serrent la main» et transfèrent des données entre eux.

Que transfèrent-ils? Ils transfèrent «HyperText», ce qui signifie HTML. (N'oubliez pas que HTML signifie «HyperText Markup Language».)

HTTP est donc une norme convenue par laquelle le HTML est envoyé dans les deux sens entre les ordinateurs. Étant donné que le HTML entre les ordinateurs est à peu près ce qu'est le Web, HTTP est absolument essentiel à son fonctionnement.

Méthodes HTTP: AVOIR, TÊTE, et PUBLIER

Différentes méthodes HTTP sont utilisées pour différents objectifs.

Pour être à l’aise avec les API HTTP, vous devez comprendre un peu le HTTP lui-même – d’abord et avant tout, qu’il existe différentes méthodes HTTP et qu’elles sont utilisées à des fins différentes. HTTP a huit méthodes au total, mais pour travailler avec l'API HTTP WordPress, nous n'avons vraiment besoin d'en connaître que trois: AVOIR, TÊTE, et PUBLIER.

AVOIR

AVOIR est probablement la méthode HTTP la plus courante et la plus familière. AVOIR les demandes sont la façon dont vous récupérez une ressource HTTP, y compris son corps principal. Chaque fois que votre navigateur visite une page Web comme https://wpshout.com, il envoie en fait un AVOIR demande au serveur du site Web.

AVOIR demandes en général seulement récupérer des informations – le serveur ne doit pas créer, modifier ou détruire des informations dans le processus de AVOIR demande.

TÊTE

TÊTE est un AVOIR demande, où vous ne voulez pas le corps réel de la ressource. Si vous collectiez simplement des métadonnées sur des sites Web, par exemple, vous pouvez simplement créer un TÊTE demande à https://wpshout.com et vous obtiendrez une réponse comme vous le feriez pour un AVOIR, mais sans le corps qui contient tout le contenu réel. (Vous venez d'apprendre, par exemple, quel schéma de codage de caractères WPShout utilise. Une liste complète se trouve dans les spécifications HTTP à l'adresse: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html.)

PUBLIER

Pour créer une requête HTTP avec des «effets secondaires» – faire en sorte que le serveur enregistre les données dans la base de données, par exemple – la méthode la plus courante est la PUBLIER demande. UNE AVOIR demande est un simple "Puis-je avoir cela?" A PUBLIER est plus élaboré: «Je vous donne une certaine quantité d'informations pour faire quelque chose avec (comme la sauvegarde dans une base de données), et après cela, j'aimerais des informations en retour.» Si vous remplissez un forme, publier un nouveau tweet ou vous enregistrer à un endroit, une couche de logiciel quelque part fait probablement PUBLIER demande pour vous.

L'API WordPress HTTP

L'API WordPress HTTP fournit des fonctions PHP simples pour effectuer des requêtes HTTP et gérer les réponses HTTP résultantes.

L'API WordPress HTTP propose quelques fonctions PHP simples et «WordPress-y» qui vous permettent de faire des requêtes HTTP et de gérer les réponses correspondantes. Ces fonctions sont de deux types:

  1. Fonctions de demande: fonctions qui font des requêtes HTTP
  2. Gestionnaires de réponses: fonctions qui vous aident à comprendre les réponses que vous obtenez

En pratique, vous utiliserez d'abord les fonctions de demande, puis vous passerez le revenirrésultats aux gestionnaires de réponses.

Fonctions de demande HTTP

Les fonctions de demande vous permettent de faire AVOIR, PUBLIER, et TÊTE les demandes (ainsi que les demandes de méthodes HTTP moins courantes). Ils sont nommés de manière cohérente:

  • wp_remote_get () est pour AVOIR demandes
  • wp_remote_post () est pour PUBLIER demandes
  • wp_remote_head () est pour TÊTE demandes

Les trois premières fonctions sont des utilisations légèrement spécialisées d'une quatrième fonction, wp_remote_request (), qui peut lui-même effectuer toutes sortes de requêtes HTTP.

Ces quatre fonctions prennent les deux mêmes arguments:

  1. Une URL
  2. Un tableau associatif de paramètres facultatifs

Ils ressemblent donc à ceci: nom_fonction ($ url, $ args);.

Un exemple: création d'un AVOIR Demande

À AVOIR la page d'accueil de WPShout, vous pouvez utiliser wp_remote_get ():

/ * Environnement: nous sommes dans le fichier functions.php d'un thème, ou dans un fichier de plugin * /

$ args = tableau (
'timeout' => 10
);
$ response = wp_remote_get ('https://wpshout.com', $ args);

Ou vous pouvez utiliser wp_remote_request () faire exactement la même chose:

/ * Environnement: nous sommes dans le fichier functions.php d'un thème, ou dans un fichier de plugin * /

$ args = tableau (
'method' => 'GET',
'timeout' => 10
);
$ response = wp_remote_request ('https://wpshout.com', $ args);

Les deux exemples de code font exactement la même chose: ils font un HTTP AVOIR demander la page d'accueil WPShout et enregistrer la réponse HTTP résultante dans la variable $ response.

Pour vous montrer le fonctionnement de $ args, nous avons spécifié un paramètre facultatif: temps libre. Ce paramètre prend un entier et vous permet de spécifier combien de temps, en secondes, vous souhaitez attendre la réponse avant que la demande ne renvoie simplement une erreur. Ainsi, les deux exemples ci-dessus attendent 10 secondes avant la fin du délai, plutôt que la valeur par défaut de 5.

le $ args tableau peut prendre un certain nombre d'autres paramètres, tels que les suivants:

  • 'réorienter' prend un entier et vous permet de spécifier le nombre de redirections, le cas échéant, que vous accepterez.
  • 'blocage' prend une valeur booléenne et indique si vous souhaitez ou non que tout le reste de l'exécution de votre script attende votre demande.
  • 'sslverify' prend une valeur booléenne et indique s'il faut refuser la réponse si le certificat de sécurité SSL du site n'est pas valide.

La liste complète des arguments se trouve dans le Codex, à l'adresse: http://codex.wordpress.org/HTTP_API#Other_Arguments.

Gestion de la réponse HTTP avec des fonctions d'assistance

Ce que vous récupérez du wp_remote_request () famille de fonctions est un Réponse HTTP, renvoyé en tant que tableau PHP structuré.

Vous pouvez généralement utiliser les fonctions d'assistance de WordPress pour trouver ce que vous voulez dans ce tableau de réponses, sans avoir à vous souvenir de sa structure complète.

Liste partielle des fonctions d'assistance

Ces fonctions prennent toutes la réponse HTTP elle-même comme leur première (et, pour wp_remote_retrieve_header (), uniquement) argument. Cette réponse est le résultat de la fonction de demande HTTP, que nous avons enregistrée en tant que variable $ response dans les exemples de code ci-dessus.

  • wp_remote_retrieve_body: Vous donne le corps réel de la réponse. Dans le cas de la demande que nous avons faite ci-dessus https://wpshout.com, vous obtiendrez tout le code HTML utilisé par le navigateur pour afficher cette page.
  • wp_remote_retrieve_header requiert un deuxième paramètre de fonction: le nom de l'en-tête HTTP que vous voulez de la réponse, tel que 'hôte' ou 'autorisation'.
  • wp_remote_retrieve_headers: Notez le «s» final; cela renvoie un tableau PHP de tous les en-têtes HTTP contenus dans la réponse.
  • wp_remote_retrieve_response_code: Vous donnera le code d'état HTTP numérique pour la réponse, comme 404 ou 200 ou 501. Si la demande aboutit, ce sera généralement dans les années 200; si vous avez fait quelque chose de mal, ce sera dans les 400; et si le serveur gâche, il devrait être dans les 500s.
  • wp_remote_retrieve_response_message est utile si vous trouvez les chiffres décourageants. Il traduira ce numéro dans une version texte, comme "Non autorisé" au lieu de 401.

Un exemple: obtenir le contenu d'une page avec wp_remote_retrieve_body ()

Cet exemple reprend où notre utilisation de wp_remote_get () ci-dessus: nous avons les résultats d'un AVOIR demande faite à https://wpshout.com. Nous allons laisser ce code dans l'exemple ci-dessous pour vous montrer comment tout s'assemble.

L'exemple fait quelque chose de stupide mais fonctionnel: comptez combien de fois le mot «WordPress» apparaît dans le code HTML complet de la page d'accueil WPShout. Si vous collez la fonction ci-dessous dans un fichier de plugin ou functions.php, puis appelez la fonction elle-même avec echo count_wordpress_on_wpshout_homepage ();, votre navigateur affichera un nombre (54, la dernière fois que nous avons vérifié).

/ * Environnement: nous sommes dans le fichier functions.php d'un thème, ou dans un fichier de plugin * /

// Compte combien de fois le code HTML de la page d'accueil WPShout comprend le mot "WordPress"
fonction count_wordpress_on_wpshout_homepage () 
$ args = tableau (
'timeout' => 10
);
$ response = wp_remote_get ('https://wpshout.com', $ args);

// Recherche d'erreur
if (is_wp_error ($ response)) 
revenir;


// Analyse un fichier HTML distant
$ wpshout_homepage_html = wp_remote_retrieve_body ($ response);

// Recherche d'erreur
if (is_wp_error ($ wpshout_homepage_html)) 
revenir;


// Compter les instances de "WordPress" dans le HTML de la page
$ count = substr_count ($ wpshout_homepage_html, 'WordPress');

return $ count;

Remarques sur cet exemple

Il est peu probable que vous ayez besoin de compter les utilisations de «WordPress» sur de nombreux sites, mais les méthodes HTTP que nous avons décrites ici sont très utiles pour analyser le contenu d'autres sites Web. Mis à part les utilisations de type «web-scraper» qui ont tendance à être semi-ombragées, ces méthodes HTTP sont les plus utiles dans l'ensemble des cas que nous commencerons à explorer le chapitre suivant: travailler avec les API HTTP – moyens formels d'exposer les données du site – offert par des services comme Facebook, Twitter et le Oxford English Dictionary… et par d'autres sites WordPress!

Pourquoi ne pas utiliser les méthodes par défaut de PHP pour effectuer des requêtes HTTP?

PHP a plusieurs façons de faire des requêtes HTTP. Pourquoi utiliser WordPress? Comme d'habitude, la réponse est que faire les choses «à la manière de WordPress» a des avantages. WordPress a vu, obtenu des rapports de bogues et a été testé au combat contre un grand nombre de serveurs, de configurations d'hébergement et d'ingérence. Les fonctions WordPress sont définies pour avoir des solutions de contournement et des solutions de rechange pour bon nombre de ces éventualités. En tant que développeur WordPress, il est bon de profiter de cette flexibilité cumulée «ça marche partout».

Ce que nous avons appris

Nous espérons que cela vous a donné une bonne idée de ce à quoi sert l'API HTTP WordPress et comment l'utiliser. Vous pouvez utiliser cette API pour obtenir n'importe quoi de la page d'accueil de WPShout à une charge utile JSON de Twitter – le ciel est la limite.

Résumé Limerick

Pour parler à des sites distants, veuillez essayer
L'API HTTP:
Pour l'analyse de la demande
Et la réponse, c'est le meilleur,
Et ses fonctions sont simples comme bonjour.

Quiz Time!

  1. Une requête HTTP distante serait la bonne solution pour:
    1. Un plugin "articles récents"
    2. Un plugin "publications Facebook récentes"
    3. Un plugin "agrégateur de blog" ciblant d'autres sites WordPress
  2. La requête HTTP suivante est utile pour provoquer des changements d'état, comme l'écriture dans une base de données:
    1. AVOIR
    2. TÊTE
    3. PUBLIER
  3. Parmi les fonctions de gestionnaire de réponses suivantes, celle-ci nécessite un deuxième argument:
    1. wp_remote_retrieve_header ()
    2. wp_remote_retrieve_headers ()
    3. wp_remote_retrieve_body ()

Réponses et explications

  1. B. UNE n'est pas «distant» et C serait probablement mieux géré à l'aide d'un lecteur de flux RSS.
  2. C. AVOIR et TÊTE devrait simplement récupérer des informations sans changer d'état.
  3. UNE. Le deuxième argument est l'en-tête souhaité, tel que 'hôte'.