Pourquoi faire une demande d’api en utilisant les fonctions http WordPress
L’utilisation des fonctionnalités PHP pour conserver du contenu à partir d’une URL Internet ne signifie pas qu’il s’agit de la meilleure approche pour le développement quotidien. L’ajout simple d’une exigence apparemment innocente pour spécifier un en – tête dans une requête HTTP complique l’exemple ci – dessus (par exemple, débordement de pile):
Exemple de code seulement, ne le faites pas Créer un flux $opts = array (\
Il n’est pas surprenant qu’un grand nombre de bibliothèques http PHP aient des dizaines de bibliothèques de support qui simplifient la création de requêtes http parce qu’il est un peu gênant d’utiliser le PHP original pour les requêtes http. Dans le monde PHP plus large, une bibliothèque en dehors de WordPress qui dépend du compositeur pour gérer les dépendances guzzle et httpful sont les bibliothèques les plus populaires pour gérer les requêtes http, mais il ya en fait des dizaines d’autres bibliothèques à choisir. Ont leurs propres forces et faiblesses. Dans le monde WordPress, nous devons être un peu plus prudents avant d’utiliser la Bibliothèque composer, surtout si vous prévoyez d’envoyer ce code à d’autres utilisateurs de WordPress. Il y a deux raisons principales à cela.
Tout d’abord, vous ou vos utilisateurs pouvez éventuellement utiliser c
C’est une fonction à moins d’avoir une bonne raison.
Salutations à WP _ Remote get, WP Remote Post et amis au cours des 12 dernières années, WordPress a fourni ses propres fonctionnalités intégrées pour traiter les requêtes http, à savoir WP Remote get (), WP Remote Post () et WP Remote Head (), une fonction pour chaque verbe HTTP Get, Post et head. Ces trois fonctions globales servent d’enveloppes pour la classe WP _ http, qui utilise à son tour la Bibliothèque de requêtes. En fait, dans notre Post, nous avons déjà écrit quelque chose sur les bibliothèques de requêtes, sur la façon dont WordPress utilise Curl pour envoyer des requêtes http. L’utilisation de WP _ Remote get () peut être très simple:
$Response = WP _ Remote get (‘ https:\/\/www.google.com\/ «); Il y a de nombreuses raisons pour lesquelles vous aimez utiliser les fonctions de la série WP _ Remote u *, et voici ce que je pense être la raison la plus importante. Les fonctions WP _ Remote u * sont utilisées presque dès le début dans WordPress, il n’est donc pas nécessaire de s’inquiéter qu’elles n’existent pas. Certaines fonctionnalités importantes au cœur de WordPress, telles que l’installation de plug – ins et les mises à jour automatiques, dépendent de leur existence et de leur bon fonctionnement, et elles le sont. Par conséquent, il n’y a aucune vraie raison d’ajouter une bibliothèque tierce pour les requêtes http, et vous avez déjà accès à une bonne bibliothèque fiable.
Vous pouvez accéder à presque toutes les fonctionnalités du protocole HTTP en passant des arguments supplémentaires au deuxième argument de ces fonctions. Vous pouvez ajouter des en – têtes, modifier la chaîne user agent, forcer une version spécifique du protocole HTTP, et plus encore. Vous pouvez également spécifier l’emplacement du certificat SSL, désactiver la validation du certificat SSL, modifier le temps d’attente de la demande (TimeOut), et même ajouter un prédicat http si nécessaire. Dans ce billet de blog, nous allons réellement étudier l’ajout d’enveloppes pour deux verbes http. Voici un exemple où m
Modifier légèrement avant d’envoyer une requête HTTP à un serveur distant: $$args = array (\/ \/ increase timeout from default 5 to 10 seconds’ timeout ‘= > 10, \/ \/ override default: $args = array (\/ \/ increase timeout from default 5 to 10 seconds’ timeout’ = > 10, \/ \/ override default: ‘WordPress \/ 5.8; www.mysite.tld’ title: ‘user agent’ = > ‘My Special WordPress installation’ \/ \/ ajouter deux titres http personnalisés’ headers’ = > array (‘x Custom id’ = > ‘abc123’, ‘X – secret thing’ = > > ‘secret’ = > secret » = > TAG par défaut: ‘wordpress,), Sauter la validation du certificat SSL du serveur http; » Sslvify \
Vous vous en rendrez compte? OK, WP _ Remote get () et tous ses amis activeront le filtre HTTP Request args avant d’envoyer la requête, donc nous pouvons la modifier avec un simple filtre WordPress: fonction my HTTP Request args ($args) {$args [‘user agent’] = ‘WordPress’; return $args;} Ajouter un filtre (‘http _ request args’,’ My HTTP Request args’); Certains propriétaires de site Web peuvent avoir besoin de bloquer complètement le trafic http vers une URL externe. Toutes les requêtes faites avec WP _ Remote get (), WP Remote Post () ou WP Remote Head () seront conformes aux hôtes WP http Block External et WP accessible Hosts. Nous avons écrit quelque chose à ce sujet dans la documentation de WP migrate DB pro. Si elles sont définies, ces deux constantes permettront au propriétaire du site d’arrêter tout trafic sortant, mais il y a aussi des exceptions: définir (‘WP _ http Block External’, True); Définition (‘WP _ accessible Hosts’,’ api.example.com, www.example.com ‘); La demande à tout autre hôte renvoie maintenant une erreur WP: $Response = WP _ Remote get (‘ https:\/\/www.google.com ‘); \/ Retour: WP _ Error Object ([Error] = > array ([HTTP Request not executed] = > array ([0] = > user Blocked request via http.)) * \/ Avec les fonctionnalités http intégrées dans le Code, les utilisateurs peuvent exercer tous ces contrôles de bas niveau sur les requêtes http sans écrire une ligne de code supplémentaire. How Nice!!? Une caractéristique intéressante de la Bibliothèque de requêtes est qu’elle diffère de certaines des bibliothèques de requêtes liées ci – dessus en ce sens qu’elle est indépendante du transport. En particulier dans le cas d’une requête HTTP, elle ne dépend pas du module Curl installé sur le serveur Web. Si une bibliothèque de requêtes est installée, elle préfère utiliser Curl. Mais en l’absence de Curl, la Bibliothèque request peut utiliser fsockopen (). Dans tous les cas, la Bibliothèque de demande vous indiquera
De cette façon, vous ne serez pas si obsédé par les tests, les dossiers ou les préoccupations. Et WP _ Remote put et WP Remote delete? Si vous avez déjà utilisé une API distante et que vous connaissez les verbes http, vous avez peut – être remarqué que jusqu’à présent, je n’ai pas mentionné WP _ Remote put () ou WP Remote delete (). Comme nous avons des implémentations intégrées pour get, Post et Head, il est clair que vous devriez également avoir des implémentations pour put et delete. Justification Non, l’équipe principale de WordPress n’a pas encore mis en œuvre tous les verbes http standards. Cependant, des discussions sont toujours en cours pour les ajouter à WordPress issue Tracker, de sorte que cela pourrait se produire dans les versions futures. Si vous avez d’abord besoin de ces fonctions, les propriétés modulaires de la classe WP _ http, combinées à la fonction d’emballage de requête WP Remote request, vous permettent d’ajouter facilement ces deux fonctions à votre code: if (! Function exists (‘WP Remote put’) {Function WP Remote put ‘) {Function ($URL, $$args) {$$Defaults = array (‘ method ‘= > >’ put ‘); $$r = WP par défaut = array (‘ method ‘= > >’ put ‘); $r = WP par défaut = array (‘ method ‘= > >’ Put ‘); $r = WP par défaut = array (‘ method ‘= > >’ put ‘); $r = WP par défaut = arrse _ args ($args, $Defaults); return WP Remote request ($URL, $r);} Si (! Function _ exists (‘WP Remote delete’) {Function WP Remote delete ($URL, $args) {$Defaults = array (‘method’ = > ‘Delete \