Lamp;rsquoutilisation des fonctionnalités PHP pour conserver du contenu à partir damp;rsquoune URL Internet ne signifie pas quamp;rsquoil samp;rsquoagit de la meilleure approche pour le développement quotidien. Lamp;rsquoajout simple damp;rsquoune exigence apparemment innocente pour spécifier un en tête dans une requête HTTP complique lamp;rsquoexemple ci dessus (par exemple, débordement de pile):
Exemple de code seulement, ne le faites pas Créer un flux $opts = array (
Il namp;rsquoest pas surprenant quamp;rsquoun 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 quamp;rsquoil est un peu gênant damp;rsquoutiliser 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 prévoyez d’envoyer ce code à d’autres utilisateurs de WordPress. Il y a deux raisons principales à cela.
Tout damp;rsquoabord, ou vos utilisateurs pouvez éventuellement utiliser c
Camp;rsquoest une fonction à moins damp;rsquoavoir 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 damp;rsquoenveloppes 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. Lamp;rsquoutilisation de WP _ Remote get () peut être très simple:
$Response = WP _ Remote get (amp;lsquo https:www.google.com «) Il y a de nombreuses raisons pour lesquelles 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 namp;rsquoy a aucune vraie raison damp;rsquoajouter une bibliothèque tierce pour les requêtes http, et 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 lamp;emplacement du certificat SSL, désactiver la validation du certificat SSL, modifier le temps damp;rsquoattente 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 lamp;rsquoajout damp;rsquoenveloppes pour deux verbes http. Voici un exemple où m
Modifier légèrement avant damp;rsquoenvoyer une requête HTTP à un serveur distant: $$args = array ( increase timeout from default 5 to 10 secondsamp;rsquo timeout amp;lsquo= amp;gt 10, override default: $args = array ( increase timeout from default 5 to 10 secondsamp;rsquo timeoutamp;rsquo = amp;gt 10, override default: amp;lsquoWordPress 5.8 www.mysite.tldamp;rsquo title: amp;lsquouser agentamp;rsquo = amp;gt amp;lsquoMy Special WordPress installationamp;rsquo ajouter deux titres http personnalisésamp;rsquo headersamp;rsquo = amp;gt array (amp;lsquox Custom idamp;rsquo = amp;gt amp;lsquoabc123amp;rsquo, amp;lsquoX secret thingamp;rsquo = amp;gt amp;gt amp;lsquosecretamp;rsquo = amp;gt secret » = amp;gt TAG par défaut: amp;lsquowordpress,), Sauter la validation du certificat SSL du serveur http » Sslvify
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 [amp;lsquouser agentamp;rsquo] = amp;lsquoWordPressamp;rsquo return $args} Ajouter un filtre (amp;lsquohttp _ request argsamp;rsquo,amp;rsquo My HTTP Request argsamp;rsquo) 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. elles sont définies, ces deux constantes permettront au propriétaire du site damp;rsquoarrêter tout trafic sortant, mais il y a aussi des exceptions: définir (amp;lsquoWP _ http Block Externalamp;rsquo, True) Définition (amp;lsquoWP _ accessible Hostsamp;rsquo,amp;rsquo api.example.com, www.example.com amp;lsquo) La demande à tout autre hôte renvoie maintenant une erreur WP: $Response = WP _ Remote get (amp;lsquo https:www.google.com amp;lsquo) Retour: WP _ Error Object ([Error] = amp;gt array ([HTTP Request not executed] = amp;gt array ([0] = amp;gt 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 quamp;rsquoelle diffère de certaines des bibliothèques de requêtes liées ci dessus en ce sens quamp;rsquoelle est indépendante du transport. En particulier dans le cas damp;rsquoune requête HTTP, elle ne dépend pas du module Curl installé sur le serveur Web. une bibliothèque de requêtes est installée, elle préfère utiliser Curl. Mais en lamp;rsquoabsence de Curl, la Bibliothèque request peut utiliser fsockopen (). Dans tous les cas, la Bibliothèque de demande indiquera
De cette façon, ne serez pas si obsédé par les tests, les dossiers ou les préoccupations. Et WP _ Remote put et WP Remote delete? avez déjà utilisé une API distante et que connaissez les verbes http, avez peut être remarqué que jusquamp;rsquoà présent, je namp;rsquoai 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 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. avez damp;rsquoabord besoin de ces fonctions, les propriétés modulaires de la classe WP _ http, combinées à la fonction damp;emballage de requête WP Remote request, permettent damp;rsquoajouter facilement ces deux fonctions à votre code: if (! Function exists (amp;lsquoWP Remote putamp;rsquo) {Function WP Remote put amp;lsquo) {Function ($URL, $$args) {$$Defaults = array (amp;lsquo method amp;lsquo= amp;gt amp;gtamp;rsquo put amp;lsquo) $$r = WP par défaut = array (amp;lsquo method amp;lsquo= amp;gt amp;gtamp;rsquo put amp;lsquo) $r = WP par défaut = array (amp;lsquo method amp;lsquo= amp;gt amp;gtamp;rsquo Put amp;lsquo) $r = WP par défaut = array (amp;lsquo method amp;lsquo= amp;gt amp;gtamp;rsquo put amp;lsquo) $r = WP par défaut = arrse _ args ($args, $Defaults) return WP Remote request ($URL, $r)} (! Function _ exists (amp;lsquoWP Remote deleteamp;rsquo) {Function WP Remote delete ($URL, $args) {$Defaults = array (amp;lsquomethodamp;rsquo = amp;gt amp;lsquoDelete
Pourquoi faire une demande d’api en utilisant les fonctions http WordPress