搜索
首页CMS教程WordPress建立一个域Whois和社交数据WordPress小部件

建立一个域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></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>></p></span>
</span>			<span><span><span><label> for<span>="<span><?php echo $this->get_field_id( 'title' ); ?></span>"</span>></label></span><span><?php _e( 'Title:' ); ?></span><span><span></span>></span>
</span>			<span><span><span><input> 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></span>></span>
</span>
		<span><span><span><p>></p></span>
</span>			<span><span><span><label>
</label></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></span>></span>
</span>			<span><span><span><input> 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></span>></span>
</span>
		<span><span><span><p>></p></span>
</span>			<span><span><span><label> for<span>="<span><?php echo $this->get_field_id( 'api_key' ); ?></span>"</span>></label></span><span><?php _e( 'API Key)' ); ?></span><span><span></span>></span>
</span>			<span><span><span><input> 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></span>></span>
</span>	<span><span><?php </span></span><span>	<span>}</span></span></span></span></span></span></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
使用OOP技术创建WordPress插件使用OOP技术创建WordPress插件Mar 06, 2025 am 10:30 AM

本教程演示了使用面向对象的编程(OOP)原理构建WordPress插件,利用Dribbble API。 让我们在保留原始含义和结构的同时完善文本以清晰和简洁。 object-ori

如何将PHP数据和字符串传递给WordPress中的JavaScript如何将PHP数据和字符串传递给WordPress中的JavaScriptMar 07, 2025 am 09:28 AM

将PHP数据传递给JavaScript的最佳实践:WP_LOCALIZE_SCRIPT和WP_ADD_INLINE_SCRIPT的比较 在PHP文件中将数据存储在静态字符串中是建议的练习。 如果在您的JavaScript代码中需要此数据,请合并

如何使用WordPress插件嵌入和保护PDF文件如何使用WordPress插件嵌入和保护PDF文件Mar 09, 2025 am 11:08 AM

本指南演示了如何使用WordPress PDF插件在WordPress帖子和页面中嵌入和保护PDF文件。 PDFS为从目录到演示文稿提供了一种用户友好的,普遍访问的格式。 此方法ENS

对于初学者来说,WordPress容易吗?对于初学者来说,WordPress容易吗?Apr 03, 2025 am 12:02 AM

WordPress对初学者来说容易上手。1.登录后台后,用户界面直观,简洁的仪表板提供所有必要功能链接。2.基本操作包括创建和编辑内容,所见即所得的编辑器简化了内容创建。3.初学者可以通过插件和主题扩展网站功能,学习曲线存在但可以通过实践掌握。

为什么有人会使用WordPress?为什么有人会使用WordPress?Apr 02, 2025 pm 02:57 PM

人们选择使用WordPress是因为其强大和灵活性。1)WordPress是一个开源的CMS,易用性和可扩展性强,适合各种网站需求。2)它有丰富的主题和插件,生态系统庞大,社区支持强大。3)WordPress的工作原理基于主题、插件和核心功能,使用PHP和MySQL处理数据,支持性能优化。

WordPress仍然免费吗?WordPress仍然免费吗?Apr 04, 2025 am 12:06 AM

WordPress核心版本是免费的,但使用过程中可能产生其他费用。1.域名和托管服务需要付费。2.高级主题和插件可能需要付费。3.专业服务和高级功能可能需要付费。

WordPress的成本是多少?WordPress的成本是多少?Apr 05, 2025 am 12:13 AM

WordPress本身免费,但使用需额外费用:1.WordPress.com提供从免费到付费的套餐,价格从每月几美元到几十美元不等;2.WordPress.org需购买域名(每年10-20美元)和托管服务(每月5-50美元);3.插件和主题多数免费,付费的价格在几十到几百美元之间;通过选择合适的托管服务、合理使用插件和主题、定期维护和优化,可以有效控制和优化WordPress的成本。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。