In einem früheren Tutorial haben wir uns tief in die WordPress HTTP -API eintauchen und gelernt, was APIs sind und wie die HTTP -API verwendet werden, um Webdienste zu konsumieren.
Ich habe versprochen, einige reale Beispiele zu zeigen, wie APIs in WordPress mithilfe der HTTP-API konsumiert werden. Dies ist die erste in einer Reihe kommender Artikel.
In diesem Tutorial entwickeln wir ein WordPress -Widget, das die WHOIs und sozialen Informationen eines Domainnamens wie Google PageRank und 1 Count, Alexa Rank, das Datum, das eine Domain erstellt wurde, als die Domain abgibt, DNS -Namensservern erstellt wurde , Facebook teilen und mag Graf, Twitter -Tweets und LinkedIn -Aktien.
Die oben aufgeführten Domäneninformationen werden von JSONWHOISIS -API erhalten.
Um diese Daten zu erhalten, wird eine GET -Anfrage an den Endpunkt http://jsonwhois.com/api/Whois mit Ihrer API -Taste und dem Domänennamen als Anforderungsparameter gesendet.
Geben Sie die URL unten in Ihren Browser ein, um verfügbare Informationen (im JSON -Format) über die Domain SitePoint.com:
anzugeben:http://jsonwhois.com/api/whois/?apiKey=54183ad8c433fac10b6f5d7c&domain=sitepoint.com
Es stammt aus dem JSON -Objekt, das das von uns entwickelnde Widget aus erstellt.
Wenn Sie in diesem Tutorial vorne springen möchten, können Sie eine Demo des Widgets anzeigen und das Widget -Plugin herunterladen.
Fügen Sie zuerst den Plugin -Header hinzu.
<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>
, um ein WordPress -Widget zu erstellen; Erweitern Sie zuerst die Standard -WP_WIDGE -Klasse, geben Sie die erforderlichen Klassenfunktionen oder -Methoden an und registrieren Sie schließlich das Widget.
Erstellen Sie eine untergeordnete Klasse, die die WP_WIDget-Klasse erweitert.
<span>class Domain_Whois_Social_Data extends WP_Widget { </span><span>// ...</span>
Geben Sie dem Widget einen Namen und eine Beschreibung mit der __construct () magischen Methode wie folgt an.
http://jsonwhois.com/api/whois/?apiKey=54183ad8c433fac10b6f5d7c&domain=sitepoint.com
Wir erstellen eine Methode namens JSON_WHOIS_API, die zwei Argumente akzeptiert: die Domain zur Abfrage und Ihre API Objekt mit json_decode () Funktion.
<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>
Für jede Domäneninformation wird das Widget angezeigt. Eine Methode, die die einzelnen Daten zurückgibt, wird ebenfalls erstellt. Das heißt, eine Methode, die den Alexa -Rang, PageRank usw. zurückgibt, wird erstellt.
Für diejenigen, die neu in der Entwicklung von PHP -Programmier- und WordPress -Plugin -Entwicklung sind, finden Sie das so etwas wie dieses seltsame:
<span>class Domain_Whois_Social_Data extends WP_Widget { </span><span>// ...</span>
Das -> wird verwendet, um auf eine Objekteigenschaft zuzugreifen, und [] für den Zugriff auf ein Array.
Der Grund dafür ist, dass die Antwort von JSONWHOIS, nachdem er in ein Objekt dekodiert wurde Der folgende Code erläutert diese $ -FORBOCK-> Facebook-> Daten [0]-> Share_Count;
In keiner bestimmten Reihenfolge finden Sie unten die Klassenmethoden oder -funktionen, die die verschiedenen Domäneninformationen zurückgeben, die das WordPress -Widget angezeigt wird.
<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>
<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>
Wenn das Widget -Formular ausgefüllt wird, sankt die update () -Methode und speichert die eingegebenen Werte in der Datenbank zur Wiederverwendung.
<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>
Die Widget () -Methode zeigt das Widget im Front-End von WordPress an.
<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>
Code Erläuterung: Erstens werden die gespeicherten Widget -Formwerte (Titel, Domäne und API -Schlüssel) aus der Datenbank abgerufen und in einer Variablen gespeichert.
<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>
Aufrufe zu den verschiedenen Methoden, die die Domänendaten zurückgeben, werden mit der Antwortkörper ($ api_response) als Argument durchgeführt.
Schließlich schließen wir die Widget -Klasse.
Die Widget -Klasse muss registriert werden, indem sie an Widgets_init -Aktion angeschlossen werden, damit sie von WordPress -Interna erkannt wird.
/** * 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>
unten finden Sie einen Screenshot des Widgets.
<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>
eine Demo des Widgets anzeigen
Um weiter zu verstehen, wie das Widget erstellt wurde und wie Sie es auf Ihrer WordPress -Site implementieren, laden Sie das Widget -Plugin von Github herunter.
Wie ich bereits erwähnt habe, ist dieser Artikel der erste in einer Reihe, die demonstriert, wie die WordPress -HTTP -API in einem Plugin verwendet wird.
Achten Sie darauf, den WordPress -Kanal für ähnliche Tutorials im Auge zu behalten.
Bis wir uns wieder treffen, fröhliche Codierung!
Kann ich das Erscheinungsbild des Widgets auf meiner Website anpassen? Passen Sie das Thema Ihrer Website an. Das Plugin verfügt über eine CSS -Datei, die Sie ändern können, um das Erscheinungsbild des Widgets zu ändern. Sie können die Farben, Schriftarten und Layout zu Ihren Einstellungen ändern.
Kann ich das Widget verwenden, um nach sozialen Daten zu suchen? Mit Widget können Sie auch nach sozialen Daten suchen. Es kann Informationen von verschiedenen Social -Media -Plattformen abrufen, einschließlich Facebook, Twitter und LinkedIn. Dies kann zum Verständnis der Social -Media -Präsenz einer Domäne nützlich sein.
Wird das Widget regelmäßig aktualisiert? Um neue Funktionen hinzuzufügen oder Fehler zu beheben. Sie können nach Updates aus Ihrem WordPress -Dashboard suchen.
Kann ich das Widget verwenden, um die Verfügbarkeit einer Domain zu überprüfen? Überprüfen Sie die Verfügbarkeit einer Domain. Wenn die Domäne nicht registriert ist, zeigt das Widget eine Nachricht an, die angibt, dass die Domäne verfügbar ist. Keine festgelegte Grenze für die Anzahl der Suchvorgänge, die Sie mit dem Widget ausführen können. Übermäßiger Gebrauch kann jedoch zu einer vorübergehenden IP -Blockierung der WHOIS -Server führen, um Missbrauch zu verhindern. Es wird empfohlen, das Widget verantwortungsbewusst zu verwenden.
Das obige ist der detaillierte Inhalt vonErstellen eines Domain -Whois- und Social -Data -WordPress -Widgets. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!