Dans le dernier article de cette série, nous avons examiné les fonctions PHP disponibles pour effectuer des requêtes à distance..
Plus précisément, nous avons examiné:
fichier_get_contents
boucle
Et nous avons également discuté de la fonction WordPress wp_remote_get
.
Dans cet article, nous allons mettre le wp_remote_get
travailler. Cette fonction fait partie de l'API HTTP - pour une utilisation pratique en l'utilisant pour récupérer les deux choses suivantes:
La bonne chose est que nous n'aurons pas besoin d'utiliser aucun mécanisme d'authentification ou OAuth, et nous n'aurons qu'à tirer parti des réponses de Twitter et de la fonctionnalité JSON de PHP..
Donc, dans cet article, nous allons jeter un regard pratique sur la façon de faire exactement cela, puis nous mettrons fin à la série en passant en revue toutes les informations que wp_remote_get
retourne afin que nous sachions comment le gérer correctement dans les travaux futurs.
Comme pour tous les plugins, la première chose à faire est de créer un répertoire dans notre wp-content / plugins annuaire. Pour les besoins de cette démo, nous appellerons notre plugin Démo Twitter.
Ainsi, nommons le répertoire du plugin twitter-démo et le fichier plugin associé twitter-demo.php.
Ensuite, nous devons aller de l'avant et tronquer l'en-tête du plugin afin que WordPress soit capable de détecter le fichier du plugin, alors faisons-le maintenant.
Tout d’abord, placez le code suivant dans l’en-tête de twitter-demo.php fichier:
Notez que nous sommes ne pas va internationaliser ce plugin. Nous avons couvert ce sujet dans un autre article et c'est quelque chose qui dépasse le cadre de ce que nous essayons de faire dans cet article..
À ce stade, vous devriez pouvoir voir le plug-in affiché dans le tableau de bord du plug-in de votre installation WordPress. Vous pouvez l'activer. cependant, il ne fera réellement rien.
Au moins pas encore.
Donner vie au plugin
Comme pour le reste des plugins de démo que je publie ici, je pense qu'il est important de commencer par décrire quoi c'est le plugin que nous allons faire avant de coder.
En tant que tel, voici ce à quoi nous pouvons nous attendre:
Bien sûr, il est un peu odieux de l’afficher au bas d’un message, mais rappelez-vous que le but de ce plugin est de démontrer Comment utiliser wp_remote_get
, comment analyser une réponse de Twitter et comment l'afficher.
Nous sommes beaucoup moins concernés par où le contenu est affiché.
Alors, allons-y et stub la classe qui fournira cette fonctionnalité.
Avant de faire quoi que ce soit, décrivons la classe que nous utiliserons pour faire la demande à Twitter. J'ai inclus tout le code ci-dessous ainsi que la documentation de chaque attribut et méthode.
Notez que nous allons compléter le reste de ces méthodes au fur et à mesure, et j'aurai aussi le code source complet du plugin à la fin de l'article..
Avant d’aller plus loin, je voudrais préciser que nous allons utiliser le modèle Singleton pour ce plugin. Nous avons couvert ce modèle de conception dans un article précédent, et même si ses avantages sortent du cadre de cet article, je vous recommande de lire l'article associé pour vous assurer que vous comprenez bien pourquoi nous avons configuré notre plugin de cette façon..
Passons maintenant aux fonctions que nous avons définies pour savoir exactement où nous nous dirigeons:
display_twitter_information
sera utilisé pour rendre le message au bas de l'articlemake_twitter_request
va effectivement demander et renvoyer les données de Twitter (ou null si la demande échoue)get_follower_count
retournera le nombre d'adeptes pour l'utilisateur spécifié (ou -1 s'il y a un problème)get_last_tweet
renverra le dernier tweet de l'utilisateur ou un message si le plugin échoueSuffisamment clair? À ce stade, travaillons à demander des informations à Twitter pour pouvoir les traiter..
Premièrement, peuplons le make_twitter_request
fonctionner avec le code suivant. Notez que je vais l'expliquer après le code:
fonction privée make_twitter_request ($ username) $ response = wp_remote_get ('https://twitter.com/users/'. $ username. '.json'); try // Notez que nous décodons la réponse du corps puisqu'il s'agit du flux JSON réel $ json = json_decode ($ response ['body']); catch (Exception $ ex) $ json = null; // end try / catch return $ json;
Dans la première ligne du code, nous profitons de wp_remote_get
faire notre demande. Notez que nous utilisons le $ nom d'utilisateur
paramètre permettant de récupérer le flux JSON de l'utilisateur. Remarquez comme il est simple de faire une demande en utilisant le wp_remote_get
une fonction.
Ce nom d'utilisateur est transmis à partir d'une fonction différente que nous examinerons momentanément..
Ensuite, notez que nous enveloppons le code dans un essayer / attraper
. En effet, la requête sur Twitter pourrait éventuellement échouer. Si cela n'échoue pas, nous utiliserons PHP json_decode
fonction pour décoder le corps de la réponse; sinon, nous allons définir la réponse égale à nul
.
Cela fera un conditionnel facile dans la fonction appelante.
Avant d’aller plus loin, il est important de noter qu’il ya là une suggestion subtile: notez que nous décodons le 'corps
'clé de la $ réponse
tableau qui est retourné. Pour ceux d'entre vous qui sont plus curieux à ce sujet, nous allons jeter un regard détaillé sur la réponse qui vient lorsque vous utilisez wp_remote_get
dans le prochain article.
Pour l'instant, notez simplement que le corps
index de la $ réponse
tableau n'est qu'un élément d'information dont nous disposons.
Maintenant que nous avons défini la fonction responsable de la demande à Twitter, définissons la fonction qui demandera des données à Twitter, puis affichons-les sous le contenu de la publication..
Encore une fois, voici le code après lequel je vais expliquer exactement ce qu'il fait:
fonction publique display_twitter_information ($ content) // Si nous ne sommes publiés que sur un seul message ou sur une seule page… if (is_single ()) //… tente de répondre à Twitter. Notez que vous devez remplacer votre nom d'utilisateur ici! if (null == ($ json_response = $ this-> make_twitter_request ('wptuts')))) //… affiche un message indiquant que la demande a échoué $ html = ''; $ html. = 'Un problème de communication avec l'API Twitter s'est produit…'; $ html. = ''; //… sinon, lisez les informations fournies par Twitter else $ html = ''; $ html. = 'I have'. $ this-> get_follower_count ($ json_response). "Mes abonnés et mon dernier tweet était" '. $ this-> get_last_tweet ($ json_response).' ". '; $ html. = ''; // end if / else $ content. = $ html; // end if / else return $ content;
Tout d’abord, sachez que c’est la fonction la plus longue de tout le plugin. Si vous pouvez passer au crible, vous êtes prêt à partir..
Rappelez-vous: cette fonction est ce qui sera appelé lors de la le contenu
action qui sera définie dans notre constructeur une fois le plugin entièrement terminé.
En tant que tel, la fonction vérifie d’abord si nous sommes sur un seul poste. Sinon, il retournera simplement le contenu; sinon, il fait ce qui suit:
Une note importante: Dans ce fonction, vous spécifiez le nom d'utilisateur pour lequel vous souhaitez récupérer les informations. Par exemple, remarquez que j’essaie de récupérer des informations pour @WPTuts en appelant $ this-> make_twitter_request ('wptuts')
.
À ce stade, nous sommes prêts à lire les informations et à concaténer les chaînes dans notre message à afficher à l'utilisateur. Nous ferons cela en utilisant le get_follower_count
méthode et la get_last_tweet
.
Étant donné que ces méthodes sont très similaires, nous examinerons les deux, puis nous les expliquerons après le code:
fonction privée get_follower_count ($ json) return (-1 < $json->followers_count)? $ json-> followers_count: -1; // fin de la fonction privée get_follower_count get_last_tweet ($ json) return (0 < strlen( $json->statut-> texte))? $ json-> status-> text: '[Aucun tweet trouvé. ] '; // end get_last_tweet
Notez que les deux fonctions sont similaires en ce sens qu’elles acceptent toutes les $ json
données de plus tôt dans le plugin. Ensuite, ils utilisent tous deux un opérateur ternaire pour déterminer s’ils doivent renvoyer le texte demandé ou un message par défaut..
En d'autres termes, si nous cherchons à afficher le nombre d'abonnés
et la valeur est supérieure à -1
, alors nous savons que nous avons une valeur à afficher, nous la renverrons; sinon, nous reviendrons -1
comme indicateur que la valeur n'est pas correctement définie.
Cela nous permet de coder de manière défensive contre quelque chose qui pourrait mal tourner lors du traitement des données..
Comme promis, voici le code source complet avec la documentation correspondante:
make_twitter_request ('wptuts'))) //… affiche un message indiquant que la requête a échoué $ html = ''; $ html. = 'Un problème de communication avec l'API Twitter s'est produit…'; $ html. = ''; //… sinon, lisez les informations fournies par Twitter else $ html = ''; $ html. = 'I have'. $ this-> get_follower_count ($ json_response). "Mes abonnés et mon dernier tweet était" '. $ this-> get_last_tweet ($ json_response).' ". '; $ html. = ''; // end if / else $ content. = $ html; // end if / else return $ content; // end display_twitter_information / ** * Tente de demander le flux JSON de l'utilisateur spécifié à Twitter * * @access public * @param $ username Nom d'utilisateur du flux JSON que nous essayons de récupérer * @return $ json Le flux JSON de l'utilisateur ou null de la demande échouée * / private function make_twitter_request ($ username) $ response = wp_remote_get ('https://twitter.com/users/'. $ username. '.json'); try // Notez que nous décodons la réponse du corps puisqu'il s'agit du flux JSON réel $ json = json_decode ($ response ['body']); catch (Exception $ ex) $ json = null; // end try / catch return $ json; // end make_twitter_request / ** * Récupère le nombre d'abonnés du flux JSON * * @ @access private * @param $ json Flux JSON de l'utilisateur * @ @ return Le nombre d'abonnés de l'utilisateur. -1 si les données JSON ne sont pas correctement définies. * / fonction privée get_follower_count ($ json) return (-1 < $json->followers_count)? $ json-> followers_count: -1; // end get_follower_count / ** * Récupère le dernier tweet du flux JSON de l'utilisateur * * @ @access private * @param $ json Flux JSON de l'utilisateur * @ @ retour Le dernier tweet du flux de l'utilisateur. '[Aucun tweet trouvé. ] 'si les données ne sont pas correctement définies. * / fonction privée get_last_tweet ($ json) return (0 < strlen( $json->statut-> texte))? $ json-> status-> text: '[Aucun tweet trouvé. ] '; // fin get_last_tweet // fin de classe // Déclenche le plugin Twitter_Demo :: get_instance ();
C'est en fait relativement simple, non? En fait, il y a à peu près autant de commentaires de code qu'il y a de lignes de code, donc le plugin lui-même est très petit..
Cette démo montre à quel point il est facile à utiliser wp_remote_get
pour interagir avec des services tiers, analyser leur réponse et l'intégrer dans un plugin. Certes, c'est très os nus, mais cela prouve toujours le concept.
Dans le prochain article de cette partie de la série, nous examinerons toutes les informations que nous pouvons transmettre à wp_remote_get
pour voir à quel point la méthode est flexible. Après cela, nous examinerons en détail les données de réponse afin que nous puissions écrire des requêtes plus complexes et écrire du code plus défensif, de manière plus défensive..