首頁 > CMS教程 > &#&按 > 建立一個域Whois和社交數據WordPress小部件

建立一個域Whois和社交數據WordPress小部件

Joseph Gordon-Levitt
發布: 2025-02-19 10:56:10
原創
569 人瀏覽過

建立一個域Whois和社交數據WordPress小部件

鑰匙要點

  • >教程提供了一個逐步指南,用於創建一個WordPress小部件,顯示域名的WHOIS和社交信息,包括Google的Pagerank和1 Count,Alexa等級,Alexa Rank,Facebook Shares和Facebook conters and twitter Tweet, Twitter Tweet,LinkedIn分享,域的創建和到期日期。
  • >小部件利用JSONWHOIS API,該API以JSON格式返回所需的域信息。以API密鑰和域名作為請求參數發送“ GET”請求。 通過擴展標準的WP_Widget類,包括必要的類功能或方法,並註冊小部件來編碼小部件。對於小部件將要顯示的每個域信息,也創建了返回單個數據的方法。
  • >小部件還具有由三個字段組成的後端設置表單:小部件標題,域和API鍵。填充表單後,Update()方法對數據庫進行了消毒並將輸入的值保存到數據庫中以進行重複使用。然後,窗口基()方法在WordPress的前端顯示窗口小部件。
  • >
  • 在上一個教程中,我們深入研究了WordPress HTTP API,我們了解了API是什麼以及如何使用HTTP API來消費Web服務。
  • >我承諾將顯示一些現實世界中的示例,說明如何使用HTTP API在WordPress中消費API,這是一系列即將發布的文章中的第一個。
>在本教程中,我們將開發一個WordPress小部件,顯示諸如Google的Pagerank和1個Count,Alexa等級的域名WHOIS和社交信息,創建域名的日期,當該域到期時,DNS名稱服務器時,Facebook分享和喜歡Count,Twitter Tweets和LinkedIn共享。

上面列出的域信息將從JSONWHOIS API獲得。

要獲取此數據,將發送一個get請求到端點http://jsonwhois.com/api/whois at api鍵,將域名和域名作為請求參數。

>

>在瀏覽器中輸入下面的URL,以揭示有關domain sitepoint.com的可用信息(以JSON格式):

>

>是來自JSON對象,我們開發的小部件將從。

如果您想進入本教程,可以查看小部件的演示並下載窗口小部件插件。

編碼小部件

首先,包括插件標題。
http://jsonwhois.com/api/whois/?apiKey=54183ad8c433fac10b6f5d7c&domain=sitepoint.com
登入後複製
登入後複製
>

創建一個WordPress窗口小部件;首先擴展標準WP_WIDGET類,包括必要的類功能或方法,最後註冊小部件。

創建一個幼兒類擴展wp_widget類。

>

>使用__construct()魔術方法給小部件一個名稱和描述,如下。

http://jsonwhois.com/api/whois/?apiKey=54183ad8c433fac10b6f5d7c&domain=sitepoint.com
登入後複製
登入後複製

>我們將創建一種稱為JSON_WHOIS_API的方法,該方法將接受兩個參數:查詢域和您的API鍵,其職責是向JSONWHOIS API發送“ Get”請求,檢索響應主體,然後將響應轉換為一個使用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>
登入後複製
對於小部件將要顯示的每個域信息,

也將創建單個數據的方法。也就是說,將創建一種返回Alexa等級的方法。

值得注意的

對於那些新的PHP編程和WordPress插件開發的人,您可能會發現類似奇怪的東西:

- > - >用於訪問對象屬性和[]用於訪問數組。 >
<span>class Domain_Whois_Social_Data extends WP_Widget {
</span><span>// ...</span>
登入後複製
的原因是,被解碼為對像後,jsonwhois的響應返回是

>多維對象

>,其中一些屬性包含數組為值。

下面的代碼說明此$對象 - > facebook-> data [0] - > share_count;

>沒有特定順序,以下是將返回WordPress Widget將顯示的各種域信息的類方法或函數。

<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>
登入後複製
>後端小部件設置表單是由由三個表單字段組成的form()方法創建的,這些表單範圍容納了窗口小部件標題,域和您的API鍵。
<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>
登入後複製
>

填充窗口小部件時,update()方法將輸入的值清理並保存到數據庫中以進行重複使用。

<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>
登入後複製
widget()方法在WordPress的前端顯示小部件。 建立一個域Whois和社交數據WordPress小部件

代碼說明:首先,從數據庫中檢索了保存的小部件式值(標題,域和API密鑰)並保存到變量。

>
<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>
登入後複製
域和API鍵傳遞給JSON_WHOIS_API方法,結果響應主體保存到$ api_response。

>調用返回域數據的各種方法是用響應主體($ api_response)作為參數進行的。

>
<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>
登入後複製
>最後,我們關閉了小部件類。

>小部件類需要通過掛鉤到widgets_init操作來註冊,因此WordPress Internals識別它。

下面的

是小部件的屏幕截圖。

>

/**
	 * 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>
登入後複製
查看窗口小部件的演示。

相關資源

如果您有興趣了解WordPress小部件的工作方式,那麼您可能會對以下文章感興趣:
  • > wordpress窗口小部件api
  • 構建標籤WordPress登錄和註冊窗口小部件
  • >通過小部件在WordPress中創建小部件API
  • 創建世界杯2014 WordPress Widget
總結

>進一步了解小部件的構建方式以及如何在WordPress網站上實現它,請從GitHub下載窗口小部件插件。

> 正如我提到的那樣,本文是第一個系列中的第一篇,該系列將演示WordPress HTTP API在插件中使用。 >

請確保關注類似教程的WordPress頻道。

直到我們再次見面,愉快的編碼!

經常詢問有關構建域Whois和社交數據WordPress小部件的問題

>如何在我的網站上安裝域WHOIS和社交數據WordPress?

安裝域WHOIS和社交數據WordPress窗口小部件,您需要先從WordPress插件存儲庫中下載插件。下載後,您可以通過導航到WordPress儀表板,單擊“插件”,然後“添加新”,最後是“上傳插件”來安裝它。然後,您可以選擇下載的文件,然後單擊“立即安裝”。安裝插件後,單擊“激活”以開始使用它。

>我可以在網站上自定義窗口小部件的外觀嗎?匹配您網站的主題。該插件帶有一個CSS文件,您可以修改該文件以更改小部件的外觀和感覺。您可以更改顏色,字體和佈局以適合您的首選項。

>

>我如何使用小部件搜索域信息?

>

一旦安裝了小部件並激活了窗口小部件,您可以使用它通過在搜索框中輸入域名並單擊“搜索”來搜索域信息。然後,小部件將顯示域的WHOIS信息,包括域的註冊狀態,所有者信息等。

>

>我可以使用小部件搜索社交數據嗎?小部件還允許您搜索社交數據。它可以從包括Facebook,Twitter和LinkedIn在內的各種社交媒體平台中檢索信息。這對於理解域的社交媒體存在可能是有用的。

>與所有WordPress主題兼容的小部件?

>小部件設計為與大多數WordPress主題兼容。但是,由於其特定的編碼或設計,可能會有一些主題可以很好地工作。如果您遇到任何問題,建議與插件開發人員聯繫以尋求幫助。

>我可以在多個網站上使用小部件嗎?但是,您需要單獨安裝和激活它。

> widget是否會定期更新?

>

定期更新小部件,以確保其與WordPress和WordPress和WordPress和WordPress和添加新功能或修復任何錯誤。您可以從WordPress儀表板中檢查更新。

>小部件是否支持國際域名?

是的,窗口小部件支持國際域名。它可以檢索在各個國家 /地區註冊和不同域擴展的域的WHOIS信息。

>

>我可以使用小部件檢查域的可用性嗎?檢查域的可用性。如果未註冊該域,小部件將顯示一條消息,指示該域可用。

>

您可以使用小部件執行的搜索數量設置限制。但是,過度使用可能會導致WHOIS服務器暫時阻止IP,以防止濫用。建議負責任地使用小部件。

>

以上是建立一個域Whois和社交數據WordPress小部件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板