首页 > CMS教程 > &#&按 > 建立一个域Whois和社交数据WordPress小部件

建立一个域Whois和社交数据WordPress小部件

Joseph Gordon-Levitt
发布: 2025-02-19 10:56:10
原创
570 人浏览过

建立一个域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键),并保存到变量。

域和API键传递给JSON_WHOIS_API方法,结果响应主体保存到$ 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>
登录后复制
>调用返回域数据的各种方法是用响应主体($ 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主题兼容吗?

> widget旨在与大多数WordPress主题兼容。但是,由于其特定的编码或设计,可能会有一些主题可以很好地工作。如果您遇到任何问题,建议与插件开发人员联系以寻求帮助。

>我可以在多个网站上使用小部件吗?但是,您需要单独安装和激活它。

> widget是否会定期更新?

>

定期更新小部件,以确保其与WordPress和WordPress和WordPress和WordPress和添加新功能或修复任何错误。您可以从WordPress仪表板中检查更新。

>小部件是否支持国际域名?

是的,窗口小部件支持国际域名。它可以检索在各个国家 /地区注册和不同域扩展的域的WHOIS信息。

>

>我可以使用小部件检查域的可用性吗?检查域的可用性。如果未注册该域,小部件将显示一条消息,指示该域可用。

>

您可以使用小部件执行的搜索数量设置限制。但是,过度使用可能会导致WHOIS服务器暂时阻止IP,以防止滥用。建议负责任地使用小部件。

>

以上是建立一个域Whois和社交数据WordPress小部件的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板