鑰匙要點(diǎn)
- >教程提供了一個(gè)逐步指南,用于創(chuàng)建一個(gè)WordPress小部件,顯示域名的WHOIS和社交信息,包括Google的Pagerank和1 Count,Alexa等級,Alexa Rank,F(xiàn)acebook Shares和Facebook conters and twitter Tweet,Twitter Tweet,LinkedIn分享,域的創(chuàng)建和到期日期。
- >小部件利用JSONWHOIS API,該API以JSON格式返回所需的域信息。以API密鑰和域名作為請求參數(shù)發(fā)送“ GET”請求。 通過擴(kuò)展標(biāo)準(zhǔn)的WP_Widget類,包括必要的類功能或方法,并注冊小部件來編碼小部件。對于小部件將要顯示的每個(gè)域信息,也創(chuàng)建了返回單個(gè)數(shù)據(jù)的方法。 >小部件還具有由三個(gè)字段組成的后端設(shè)置表單:小部件標(biāo)題,域和API鍵。填充表單后,Update()方法對數(shù)據(jù)庫進(jìn)行了消毒并將輸入的值保存到數(shù)據(jù)庫中以進(jìn)行重復(fù)使用。然后,窗口基()方法在WordPress的前端顯示窗口小部件。
- >
- 在上一個(gè)教程中,我們深入研究了WordPress HTTP API,我們了解了API是什么以及如何使用HTTP API來消費(fèi)Web服務(wù)。 >我承諾將顯示一些現(xiàn)實(shí)世界中的示例,說明如何使用HTTP API在WordPress中消費(fèi)API,這是一系列即將發(fā)布的文章中的第一個(gè)。
上面列出的域信息將從JSONWHOIS API獲得。
要獲取此數(shù)據(jù),將發(fā)送一個(gè)get請求到端點(diǎn)http://jsonwhois.com/api/whois at api鍵,將域名和域名作為請求參數(shù)。>
>在瀏覽器中輸入下面的URL,以揭示有關(guān)domain sitepoint.com的可用信息(以JSON格式):>
>是來自JSON對象,我們開發(fā)的小部件將從。
如果您想進(jìn)入本教程,可以查看小部件的演示并下載窗口小部件插件。編碼小部件
首先,包括插件標(biāo)題。
http://jsonwhois.com/api/whois/?apiKey=54183ad8c433fac10b6f5d7c&domain=sitepoint.com>
創(chuàng)建一個(gè)WordPress窗口小部件;首先擴(kuò)展標(biāo)準(zhǔn)WP_WIDGET類,包括必要的類功能或方法,最后注冊小部件。
創(chuàng)建一個(gè)幼兒類擴(kuò)展wp_widget類。
>
>使用__construct()魔術(shù)方法給小部件一個(gè)名稱和描述,如下。
http://jsonwhois.com/api/whois/?apiKey=54183ad8c433fac10b6f5d7c&domain=sitepoint.com
>我們將創(chuàng)建一種稱為JSON_WHOIS_API的方法,該方法將接受兩個(gè)參數(shù):查詢域和您的API鍵,其職責(zé)是向JSONWHOIS API發(fā)送“ Get”請求,檢索響應(yīng)主體,然后將響應(yīng)轉(zhuǎn)換為一個(gè)使用JSON_DECODE()函數(shù)的對象。
<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>對于小部件將要顯示的每個(gè)域信息,
也將創(chuàng)建單個(gè)數(shù)據(jù)的方法。也就是說,將創(chuàng)建一種返回Alexa等級的方法。
值得注意的對于那些新的PHP編程和WordPress插件開發(fā)的人,您可能會(huì)發(fā)現(xiàn)類似奇怪的東西:
- > - >用于訪問對象屬性和[]用于訪問數(shù)組。
<span>class Domain_Whois_Social_Data extends WP_Widget { </span><span>// ...</span>的原因是,被解碼為對象后,jsonwhois的響應(yīng)返回是
>多維對象
>,其中一些屬性包含數(shù)組為值。下面的代碼說明此$對象 - > facebook-> data [0] - > share_count;
>沒有特定順序,以下是將返回WordPress Widget將顯示的各種域信息的類方法或函數(shù)。
<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>>后端小部件設(shè)置表單是由由三個(gè)表單字段組成的form()方法創(chuàng)建的,這些表單范圍容納了窗口小部件標(biāo)題,域和您的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>>
填充窗口小部件時(shí),update()方法將輸入的值清理并保存到數(shù)據(jù)庫中以進(jìn)行重復(fù)使用。
<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的前端顯示小部件。

>代碼說明:首先,從數(shù)據(jù)庫中檢索了保存的窗口小部件值(標(biāo)題,域和API鍵),并保存到變量。
域和API鍵傳遞給JSON_WHOIS_API方法,結(jié)果響應(yīng)主體保存到$ api_response。<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>>調(diào)用返回域數(shù)據(jù)的各種方法是用響應(yīng)主體($ api_response)作為參數(shù)進(jìn)行的。
>
>最后,我們關(guān)閉了小部件類。<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>
相關(guān)資源
如果您有興趣了解WordPress小部件的工作方式,那么您可能會(huì)對以下文章感興趣:- > wordpress窗口小部件api
- 構(gòu)建標(biāo)簽WordPress登錄和注冊窗口小部件 >通過小部件在WordPress中創(chuàng)建小部件API
- 創(chuàng)建世界杯2014 WordPress Widget
>進(jìn)一步了解小部件的構(gòu)建方式以及如何在WordPress網(wǎng)站上實(shí)現(xiàn)它,請從GitHub下載窗口小部件插件。
>
正如我提到的那樣,本文是第一個(gè)系列中的第一篇,該系列將演示W(wǎng)ordPress HTTP API在插件中使用。
請確保關(guān)注類似教程的WordPress頻道。
直到我們再次見面,愉快的編碼!經(jīng)常詢問有關(guān)構(gòu)建域Whois和社交數(shù)據(jù)WordPress小部件的問題
>如何在我的網(wǎng)站上安裝域WHOIS和社交數(shù)據(jù)WordPress?
安裝域WHOIS和社交數(shù)據(jù)WordPress窗口小部件,您需要先從WordPress插件存儲庫中下載插件。下載后,您可以通過導(dǎo)航到WordPress儀表板,單擊“插件”,然后“添加新”,最后是“上傳插件”來安裝它。然后,您可以選擇下載的文件,然后單擊“立即安裝”。安裝插件后,單擊“激活”以開始使用它。
>我可以在網(wǎng)站上自定義窗口小部件的外觀嗎?匹配您網(wǎng)站的主題。該插件帶有一個(gè)CSS文件,您可以修改該文件以更改小部件的外觀和感覺。您可以更改顏色,字體和布局以適合您的首選項(xiàng)。
>>我如何使用小部件搜索域信息?
>
>我可以使用小部件搜索社交數(shù)據(jù)嗎?小部件還允許您搜索社交數(shù)據(jù)。它可以從包括Facebook,Twitter和LinkedIn在內(nèi)的各種社交媒體平臺中檢索信息。這對于理解社交媒體的存在很有用。>窗口小部件與所有WordPress主題兼容嗎?> widget旨在與大多數(shù)WordPress主題兼容。但是,由于其特定的編碼或設(shè)計(jì),可能會(huì)有一些主題可以很好地工作。如果您遇到任何問題,建議與插件開發(fā)人員聯(lián)系以尋求幫助。
>我可以在多個(gè)網(wǎng)站上使用小部件嗎?但是,您需要單獨(dú)安裝和激活它。
> widget是否會(huì)定期更新?
>
定期更新小部件,以確保其與WordPress和WordPress和WordPress和WordPress和添加新功能或修復(fù)任何錯(cuò)誤。您可以從WordPress儀表板中檢查更新。
>小部件是否支持國際域名?
是的,窗口小部件支持國際域名。它可以檢索在各個(gè)國家 /地區(qū)注冊和不同域擴(kuò)展的域的WHOIS信息。>
>我可以使用小部件檢查域的可用性嗎?檢查域的可用性。如果未注冊該域,小部件將顯示一條消息,指示該域可用。>
您可以使用小部件執(zhí)行的搜索數(shù)量設(shè)置限制。但是,過度使用可能會(huì)導(dǎo)致WHOIS服務(wù)器暫時(shí)阻止IP,以防止濫用。建議負(fù)責(zé)任地使用小部件。>
以上是建立一個(gè)域Whois和社交數(shù)據(jù)WordPress小部件的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

WordPress導(dǎo)致服務(wù)器CPU使用率飆升的主要原因包括插件問題、數(shù)據(jù)庫查詢效率低、主題代碼質(zhì)量差或流量激增。1.首先通過top、htop或控制面板工具確認(rèn)是否為WordPress引起的高負(fù)載;2.進(jìn)入故障排查模式逐步啟用插件排查性能瓶頸,使用QueryMonitor分析插件執(zhí)行情況并刪除或替換低效插件;3.安裝緩存插件、清理冗余數(shù)據(jù)、分析慢查詢?nèi)罩疽詢?yōu)化數(shù)據(jù)庫;4.檢查主題是否存在過度加載內(nèi)容、復(fù)雜查詢或缺乏緩存機(jī)制等問題,建議用標(biāo)準(zhǔn)主題測試對比并優(yōu)化代碼邏輯。按照上述步驟逐一排查可定位并解

MinifyingJavaScript文件可通過刪除空白、注釋和無用代碼來提升WordPress網(wǎng)站加載速度。1.使用支持合并壓縮的緩存插件如W3TotalCache,在“Minify”選項(xiàng)中啟用并選擇壓縮模式;2.使用專用壓縮插件如FastVelocityMinify,提供更精細(xì)控制;3.手動(dòng)壓縮JS文件并通過FTP上傳,適用于熟悉開發(fā)工具的用戶。注意部分主題或插件腳本可能與壓縮功能沖突,啟用后需徹底測試網(wǎng)站功能。

優(yōu)化WordPress站點(diǎn)不依賴插件的方法包括:1.使用輕量級主題,如Astra或GeneratePress,避免功能堆砌的主題;2.手動(dòng)壓縮和合并CSS、JS文件,減少HTTP請求;3.上傳前優(yōu)化圖片,使用WebP格式并控制文件大小;4.配置.htaccess啟用瀏覽器緩存,并接入CDN提升靜態(tài)資源加載速度;5.限制文章修訂版本并定期清理數(shù)據(jù)庫冗余數(shù)據(jù)。

TransientsAPI是WordPress中用于臨時(shí)存儲可自動(dòng)過期數(shù)據(jù)的內(nèi)置工具,其核心函數(shù)為set_transient、get_transient和delete_transient。相比OptionsAPI,transients支持設(shè)置生存時(shí)間(TTL),適合緩存API請求結(jié)果、復(fù)雜計(jì)算數(shù)據(jù)等場景。使用時(shí)需注意key命名唯一性與命名空間、緩存“懶刪除”機(jī)制及對象緩存環(huán)境下可能不持久的問題。典型應(yīng)用場景包括減少外部請求頻率、控制代碼執(zhí)行節(jié)奏和提升頁面加載性能。

防止評論垃圾信息最有效的方式是通過程序化手段自動(dòng)識別并攔截。1.使用驗(yàn)證碼機(jī)制(如GooglereCAPTCHA或hCaptcha)可有效區(qū)分人類與機(jī)器人,尤其適合公眾網(wǎng)站;2.設(shè)置隱藏字段(Honeypot技術(shù)),利用機(jī)器人自動(dòng)填寫特性識別垃圾評論,不影響用戶體驗(yàn);3.檢查評論內(nèi)容關(guān)鍵詞黑名單,通過敏感詞匹配過濾垃圾信息,需注意避免誤判;4.判斷評論頻率與來源IP,限制單位時(shí)間內(nèi)的提交次數(shù)并建立黑名單;5.使用第三方反垃圾服務(wù)(如Akismet、Cloudflare)提升識別準(zhǔn)確性??筛鶕?jù)網(wǎng)站

PluginCheck是一個(gè)幫助WordPress用戶快速檢查插件兼容性和性能的工具,主要用來識別當(dāng)前安裝的插件是否存在與最新版本W(wǎng)ordPress不兼容、存在安全漏洞等問題。1.如何開始檢查?安裝激活后,在后臺點(diǎn)擊“RunaScan”按鈕即可自動(dòng)掃描所有插件;2.報(bào)告包含插件名稱、檢測類型、問題描述及解決方案建議,便于優(yōu)先處理嚴(yán)重問題;3.建議在更新WordPress前、網(wǎng)站異常時(shí)或定期運(yùn)行檢查,提前發(fā)現(xiàn)隱患,避免未來出現(xiàn)重大問題。

在開發(fā)Gutenberg塊時(shí),正確enqueue資產(chǎn)的方法包括:1.使用register_block_type指定editor_script、editor_style和style的路徑;2.在functions.php或插件中通過wp_register_script和wp_register_style注冊資源,并設(shè)置正確的依賴和版本;3.配置構(gòu)建工具輸出合適的模塊格式,并確保路徑一致;4.通過add_theme_support或enqueue_block_assets控制前端樣式的加載邏輯,確保

要添加自定義用戶字段需根據(jù)平臺選擇擴(kuò)展方式并注意數(shù)據(jù)驗(yàn)證與權(quán)限控制。常見做法包括:1.利用數(shù)據(jù)庫額外表或鍵值對結(jié)構(gòu)存儲信息;2.在前端加入輸入框并與后端集成;3.對敏感數(shù)據(jù)進(jìn)行格式校驗(yàn)和訪問權(quán)限限制;4.更新接口及模板以支持新字段展示與編輯,同時(shí)兼顧移動(dòng)端適配和用戶體驗(yàn)。
