Dans un tutoriel précédent, nous avons plongé en profondeur dans l'API HTTP WordPress et nous avons appris ce que sont les API et comment utiliser l'API HTTP pour consommer des services Web.
J'ai promis de montrer quelques exemples du monde réel de la façon de consommer des API dans WordPress en utilisant l'API HTTP, c'est le premier d'une série d'articles à venir.
Dans ce didacticiel, nous développerons un widget WordPress qui affiche les whois et les informations sociales d'un nom de domaine tel que le pagerank de Google et 1 nombre, Alexa Rank, la date d'un domaine a été créée, lorsque le domaine expire, les serveurs de noms DNS , Facebook partage et aime le nombre, les tweets Twitter et les parts LinkedIn.
Les informations du domaine énumérées ci-dessus seront obtenues à partir de l'API JSONWOIS.
Pour obtenir ces données, une demande GET sera envoyée au point de terminaison http://jsonwhois.com/api/whois avec votre clé API et le nom de domaine comme paramètres de demande.
Entrez l'URL ci-dessous dans votre navigateur pour révéler les informations disponibles (au format JSON) sur le domaine Sitepoint.com:
http://jsonwhois.com/api/whois/?apiKey=54183ad8c433fac10b6f5d7c&domain=sitepoint.com
C'est à partir de l'objet JSON que le widget que nous développons obtiendra ses données.
Si vous souhaitez sauter dans ce tutoriel, vous pouvez afficher une démo du widget et télécharger le plugin du widget.
Tout d'abord, incluez l'en-tête du plugin.
<span><span><?php </span></span><span> </span><span><span>/* </span></span><span><span>Plugin Name: Domain Whois and Social Data </span></span><span><span>Plugin URI: https://www.sitepoint.com </span></span><span><span>Description: Display whois and social data of a Domain. </span></span><span><span>Version: 1.0 </span></span><span><span>Author: Agbonghama Collins </span></span><span><span>Author URI: http://w3guy.com </span></span><span><span>License: GPL2 </span></span><span><span>*/</span></span>
pour créer un widget wordpress; Étendez d'abord la classe WP_Widget standard, incluez les fonctions ou méthodes de classe nécessaires et enfin, enregistrez le widget.
Créez une classe d'enfants étendant la classe WP_Widget.
<span>class Domain_Whois_Social_Data extends WP_Widget { </span><span>// ...</span>
Donnez au widget un nom et une description en utilisant la méthode magique __Construct () comme suit.
http://jsonwhois.com/api/whois/?apiKey=54183ad8c433fac10b6f5d7c&domain=sitepoint.com
Nous allons créer une méthode appelée json_whois_api qui acceptera deux arguments: le domaine à interroger et votre clé API dont le devoir est d'envoyer une demande `` obtenir '' à l'API JSONWOIS, de récupérer le corps de réponse, puis de convertir la réponse à un objet utilisant la fonction json_decode ().
<span><span><?php </span></span><span> </span><span><span>/* </span></span><span><span>Plugin Name: Domain Whois and Social Data </span></span><span><span>Plugin URI: https://www.sitepoint.com </span></span><span><span>Description: Display whois and social data of a Domain. </span></span><span><span>Version: 1.0 </span></span><span><span>Author: Agbonghama Collins </span></span><span><span>Author URI: http://w3guy.com </span></span><span><span>License: GPL2 </span></span><span><span>*/</span></span>
Pour chaque élément d'informations de domaine que le widget va afficher, une méthode qui renvoie les données individuelles sera également créée. Autrement dit, une méthode qui renvoie le rang Alexa, le pagerank et ainsi de suite sera créé.
Pour ceux qui sont nouveaux sur la programmation PHP et le développement du plugin WordPress, vous pourriez trouver quelque chose comme ce étrange:
<span>class Domain_Whois_Social_Data extends WP_Widget { </span><span>// ...</span>
le -> est utilisé pour accéder à une propriété d'objet et [] pour accéder à un tableau.
La raison en est que le retour de réponse par JSONWHOIS après avoir été décodé dans un objet est un objet multidimensionnel avec une propriété contenant un tableau sous forme de valeurs.
Le code ci-dessous explique ce $ objet-> Facebook-> Data [0] -> Share_count;
<span>function __construct() { </span> <span><span>parent::</span>__construct( </span> <span>'whois_social_widget', // Base ID </span> <span>__( 'Domain Whois and Social Data', 'dwsd' ), // Name </span> <span>array( 'description' => __( 'Display whois and social data of a Domain.', 'dwsd' ), ) // Description </span> <span>); </span> <span>}</span>
sans ordre particulier, ci-dessous les méthodes de classe ou les fonctions qui renverront les différentes informations de domaine que le widget WordPress affichera.
<span>/** </span><span> * Retrieve the response body of the API GET request and convert it to an object </span><span> * </span><span> * <span>@param $domain </span></span><span> * <span>@param $api_key </span></span><span> * </span><span> * <span>@return <span>object|mixed</span> </span></span><span> */ </span> <span>public function json_whois_api( $domain, $api_key ) { </span> <span>$url = 'http://jsonwhois.com/api/whois/?apiKey=' . $api_key . '&domain=' . $domain; </span> <span>$request = wp_remote_get( $url ); </span> <span>$response_body = wp_remote_retrieve_body( $request ); </span> <span>$decode_json_to_object = json_decode( $response_body ); </span> <span>return $decode_json_to_object; </span> <span>}</span>
<span>return $response_data->social->facebook->data[0]->share_count;</span>
<span>[facebook] => stdClass Object </span> <span>( </span> <span>[data] => Array </span> <span>( </span> <span>[0] => stdClass Object </span> <span>( </span> https<span>%3A%2F%2Feditor.sitepoint.com => https://www.sitepoint.com </span> <span>[normalized_url] => https://www.sitepoint.com/ </span> <span>[share_count] => 1094 </span> <span>[like_count] => 448 </span> <span>[comment_count] => 161 </span> <span>[total_count] => 1703 </span> <span>[commentsbox_count] => 0 </span> <span>[comments_fbid] => 501562723433 </span> <span>[click_count] => 138 </span> <span>) </span> <span>) </span> <span>)</span>
<span>/** </span><span> * Get the domain Alexa Rank </span><span> * </span><span> * <span>@param <span>object</span> $response_data JSON decoded response body </span></span><span> * </span><span> * <span>@return <span>integer</span> </span></span><span> */ </span> <span>public function alexa_rank( $response_data ) { </span> <span>return $response_data->alexa->rank; </span> <span>}</span>
<span>/** </span><span> * Number of times domain have been tweeted </span><span> * </span><span> * <span>@param <span>object</span> $response_data JSON decoded response body </span></span><span> * </span><span> * <span>@return <span>integer</span> </span></span><span> */ </span> <span>public function twitter_tweets( $response_data ) { </span> <span>return $response_data->social->twitter->count; </span> <span>}</span>
<span>/** </span><span> * Number of times domain have been shared on Facebook </span><span> * </span><span> * <span>@param <span>object</span> $response_data JSON decoded response body </span></span><span> * </span><span> * <span>@return <span>integer</span> </span></span><span> */ </span> <span>public function facebook_share_count( $response_data ) { </span> <span>return $response_data->social->facebook->data[0]->share_count; </span> <span>}</span>
<span>/** </span><span> * Number of times domain have been liked on Facebook </span><span> * </span><span> * <span>@param <span>object</span> $response_data JSON decoded response body </span></span><span> * </span><span> * <span>@return <span>mixed</span> </span></span><span> */ </span> <span>public function facebook_like_count( $response_data ) { </span> <span>return $response_data->social->facebook->data[0]->like_count; </span> <span>}</span>
<span>/** </span><span> * Number of times domain have been shared to LinkedIn </span><span> * </span><span> * <span>@param <span>object</span> $response_data JSON decoded response body </span></span><span> * </span><span> * <span>@return <span>integer</span> </span></span><span> */ </span> <span>public function linkedin_share( $response_data ) { </span> <span>return $response_data->social->linkedIn; </span> <span>}</span>
<span>/** </span><span> * Number of times domain have been shared on Google+ </span><span> * </span><span> * <span>@param <span>object</span> $response_data JSON decoded response body </span></span><span> * </span><span> * <span>@return <span>integer</span> </span></span><span> */ </span> <span>public function google_share( $response_data ) { </span> <span>return $response_data->social->google; </span> <span>}</span>
<span>/** </span><span> * Google PageRank of Domain </span><span> * </span><span> * <span>@param <span>object</span> $response_data JSON decoded response body </span></span><span> * </span><span> * <span>@return <span>integer</span> </span></span><span> */ </span> <span>public function google_page_rank( $response_data ) { </span> <span>return $response_data->google->rank; </span> <span>}</span>
Le formulaire de paramètres de widget back-end est créé par la méthode Form () composée de trois champs de formulaire qui abritent le titre du widget, le domaine et votre clé API.
<span>/** </span><span> *Domain name servers </span><span> * </span><span> * <span>@param <span>object</span> $response_data JSON decoded response body </span></span><span> * </span><span> * <span>@return <span>string</span> </span></span><span> */ </span> <span>public function domain_nameservers( $response_data ) { </span> <span>$name_servers = $response_data->whois->domain->nserver; </span> <span>return $name_servers->{0} . ' ' . $name_servers->{1}; </span> <span>}</span>
Lorsque le formulaire de widget est rempli, la méthode Update () désinfecte et enregistre les valeurs entrées dans la base de données pour la réutilisation.
<span>/** </span><span> * Date domain was created </span><span> * </span><span> * <span>@param <span>object</span> $response_data JSON decoded response body </span></span><span> * </span><span> * <span>@return <span>mixed</span> </span></span><span> */ </span> <span>public function date_created( $response_data ) { </span> <span>return $response_data->whois->domain->created; </span> <span>}</span>
La méthode widget () affiche le widget dans le frontal de WordPress.
<span>/** </span><span> * Domain expiration date </span><span> * </span><span> * <span>@param <span>object</span> $response_data JSON decoded response body </span></span><span> * </span><span> * <span>@return <span>mixed</span> </span></span><span> */ </span> <span>public function expiration_date( $response_data ) { </span> <span>return $response_data->whois->domain->expires; </span> <span>}</span>
Code Explication: Tout d'abord, les valeurs de formulaire de widget enregistrées (titre, domaine et clé API) sont récupérées à partir de la base de données et enregistrées en variable.
Le domaine et la clé API sont transmis à la méthode json_whois_api avec le corps de réponse résultant enregistré sur $ api_response.
Les appels aux différentes méthodes qui renvoient les données du domaine sont effectuées avec le corps de réponse ($ api_response) comme argument.
Enfin, nous fermons la classe Widget.
/** * Back-end widget form. * * @see WP_Widget::form() * * @param array $instance Previously saved values from database. * * @return string */ public function form( $instance ) { if ( isset( $instance['title'] ) ) { $title = $instance['title']; } else { $title = __( 'Domain Whois & Social Data', 'dwsd' ); } $domain_name = isset( $instance['domain_name'] ) ? $instance['domain_name'] : ''; $api_key = isset( $instance['api_key'] ) ? $instance['api_key'] : '54183ad8c433fac10b6f5d7c'; ?> <span><span><span><p</span>></span> </span> <span><span><span><label</span> for<span>="<span><?php echo $this->get_field_id( 'title' ); ?></span>"</span>></span><span><?php _e( 'Title:' ); ?></span><span><span></label</span>></span> </span> <span><span><span><input</span> class<span>="widefat"</span> id<span>="<span><?php echo $this->get_field_id( 'title' ); ?></span>"</span> </span></span><span> <span>name<span>="<span><?php echo $this->get_field_name( 'title' ); ?></span>"</span> type<span>="text"</span> </span></span><span> <span>value<span>="<span><?php echo esc_attr( $title ); ?></span>"</span>></span> </span> <span><span><span></p</span>></span> </span> <span><span><span><p</span>></span> </span> <span><span><span><label</span> </span></span><span> <span>for<span>="<span><?php echo $this->get_field_id( 'domain_name' ); ?></span>"</span>></span><span><?php _e( 'Domain name (without http://)' ); ?></span><span><span></label</span>></span> </span> <span><span><span><input</span> class<span>="widefat"</span> id<span>="<span><?php echo $this->get_field_id( 'domain_name' ); ?></span>"</span> </span></span><span> <span>name<span>="<span><?php echo $this->get_field_name( 'domain_name' ); ?></span>"</span> type<span>="text"</span> </span></span><span> <span>value<span>="<span><?php echo esc_attr( $domain_name ); ?></span>"</span>></span> </span> <span><span><span></p</span>></span> </span> <span><span><span><p</span>></span> </span> <span><span><span><label</span> for<span>="<span><?php echo $this->get_field_id( 'api_key' ); ?></span>"</span>></span><span><?php _e( 'API Key)' ); ?></span><span><span></label</span>></span> </span> <span><span><span><input</span> class<span>="widefat"</span> id<span>="<span><?php echo $this->get_field_id( 'api_key' ); ?></span>"</span> </span></span><span> <span>name<span>="<span><?php echo $this->get_field_name( 'api_key' ); ?></span>"</span> type<span>="text"</span> </span></span><span> <span>value<span>="<span><?php echo esc_attr( $api_key ); ?></span>"</span>></span> </span> <span><span><span></p</span>></span> </span> <span><span><?php </span></span><span> <span>}</span></span>
La classe de widget doit être enregistrée en étant accrochée à l'action widgets_init afin qu'elle soit reconnue par WordPress internes.
<span>/** </span><span> * Sanitize widget form values as they are saved. </span><span> * </span><span> * <span>@see WP_Widget::update() </span></span><span> * </span><span> * <span>@param <span>array</span> $new_instance Values just sent to be saved. </span></span><span> * <span>@param <span>array</span> $old_instance Previously saved values from database. </span></span><span> * </span><span> * <span>@return <span>array</span> Updated safe values to be saved. </span></span><span> */ </span> <span>public function update( $new_instance, $old_instance ) { </span> <span>$instance = array(); </span> <span>$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; </span> <span>$instance['domain_name'] = ( ! empty( $new_instance['domain_name'] ) ) ? strip_tags( $new_instance['domain_name'] ) : ''; </span> <span>return $instance; </span> <span>}</span>
Vous trouverez ci-dessous une capture d'écran du widget.
Afficher une démo du widget.
Pour mieux comprendre comment le widget a été construit et comment l'implémenter sur votre site WordPress, téléchargez le plugin Widget à partir de GitHub.
Comme je l'ai mentionné, cet article est le premier d'une série qui montrera comment l'API WordPress HTTP est utilisé dans un plugin.
Assurez-vous de garder un œil sur le canal WordPress pour des tutoriels similaires.
Jusqu'à ce que nous nous reverrons, codage heureux!
Pour installer le widget WordPress de données et de données sociales, vous devez d'abord télécharger le plugin à partir du référentiel de plugin WordPress. Une fois téléchargé, vous pouvez l'installer en naviguant vers votre tableau de bord WordPress, en cliquant sur «Plugins», puis «Ajouter un nouveau» et enfin «télécharger le plugin». Vous pouvez ensuite choisir le fichier téléchargé et cliquer sur «Installer maintenant». Une fois le plugin installé, cliquez sur «Activer» pour commencer à l'utiliser.
Oui, vous pouvez personnaliser l'apparence du widget pour Faites correspondre le thème de votre site Web. Le plugin est livré avec un fichier CSS que vous pouvez modifier pour modifier l'apparence du widget. Vous pouvez modifier les couleurs, les polices et la mise en page en fonction de vos préférences.
Une fois le widget installé et activé, vous pouvez utiliser Il recherche des informations sur le domaine en entrant le nom de domaine dans la zone de recherche et en cliquant sur «Recherche». Le widget affichera ensuite les informations WHOIS pour le domaine, y compris l'état d'enregistrement du domaine, les informations du propriétaire, etc. Widget vous permet également de rechercher des données sociales. Il peut récupérer des informations de diverses plateformes de médias sociaux, notamment Facebook, Twitter et LinkedIn. Cela peut être utile pour comprendre la présence des médias sociaux d'un domaine.
Le widget est conçu pour être compatible avec la plupart des thèmes WordPress. Cependant, il peut y avoir des thèmes avec lesquels cela ne fonctionne pas bien en raison de leur codage ou de leur conception spécifique. Si vous rencontrez des problèmes, il est recommandé de contacter le développeur du plugin pour obtenir de l'aide.
Oui, une fois que vous avez téléchargé le plugin, vous pouvez l'utiliser sur plusieurs sites Web. Cependant, vous devrez l'installer et l'activer sur chaque site Web individuellement.
Le widget est mis à jour régulièrement pour s'assurer qu'il reste compatible avec les dernières versions de WordPress et Pour ajouter de nouvelles fonctionnalités ou corriger les bogues. Vous pouvez vérifier les mises à jour de votre tableau de bord WordPress.
Oui, le widget prend en charge les noms de domaine international. Il peut récupérer les informations WHOIS pour les domaines enregistrés dans divers pays et avec différentes extensions de domaine.
Oui, vous pouvez utiliser le widget pour Vérifiez la disponibilité d'un domaine. Si le domaine n'est pas enregistré, le widget affichera un message indiquant que le domaine est disponible.
Il y a Aucune limite définie au nombre de recherches que vous pouvez effectuer avec le widget. Cependant, une utilisation excessive peut entraîner un blocage temporaire de l'IP par les serveurs WHOIS pour prévenir les abus. Il est recommandé d'utiliser le widget de manière responsable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!