搜索
首页CMS教程WordPress分享一个基于Yar的WordPress微博墙插件

在现在移动互联网时代,微博已经成为了每个人生活中必不可少的一个社交工具。而WordPress是全世界最为流行的博客系统,把你的博客接入新浪微博,借助微博的强大用户群,不仅能给你的网站提供巨大的流量,而且还能带来不可估量价值。

WordPress微博墙就是这样的一个工具,这不是一款普通的插件,这是一款搭建在SAE基于Yar的插件。它非常的轻量,它不像其他的插件那样,提供了非常多华丽却不实用的功能,不仅臃肿而且拖慢速度。这是一款基于Yar的插件,底层C语言开发,性能卓越。而且拓展性很好,可以给你提供一下功能:

1.个人微博墙
2.发布文章同步到新浪微博
3.文章评论同步到新浪微博
接下来介绍一下基本结构:

1 核心数据操作类

这个类在Dao.class.php文件中,它是插件的核心,负责去服务端获取数据

/**
*
*	用户数据获取类
*	@author 夏天
*	@date 2015年6月28日
*	@site http://www.xtwind.com
*
*/
class Dao{
	/**
	*	微博RPC操作对象
	*/
	private $client;

	/**
	*	用户标识
	*/
	private $mark;

	/**
	*	构造函数设置用户标识
	*/
	function __construct($state);

	/**
	*	返回用户标识
	*/
	public function getMark();
 
	/**
	*	启用插件
	*	@return 成功返回true,失败返回认证地址 
	*/
	public function run();

	/**
	*	获取授权情况
	* 	@return string 返回过期时间,未登录或者过期返回false
	*/
	public function getAuthOver();

	/**
	*	删除授权
	*	@return boolean
	*/
	public function delAuth();

	/**
	*	获取认证跳转url
	*	@return string
	*/
	public function getAuthUrl();

	/**
	*	获取用户微博列表
	* 	@return array
	*/
	public function getWeibo();

	/**
	*	获取用户基本信息
	* 	@return array
	*/
	public function getUser();

	/**
	*	发布微博
	*	@return Array 返回微博数据数组
	*/
	public function weiboPub($content,$imgUrl=null);

	/**
	*	删除微博
	*	@param  int  微博ID
	*	@return Array 返回被删除微博数据数组
	*/
	public function weiboDel($weiboID);

	/**
	*	发布一条评论过
	*	@param  int  微博ID
	*	@param 	string  评论内容
	*	@return array 评论相关数组
	*/
	public function sendComment($id,$comment);

	/**
	*	关注一个用户
	*	@param 用户ID或者名字
	*	@return 返回关注者信息
	*/
	public function followUser($user);

	/**
	*	转发微博
	*	@param int 微博id
	*	@param string 添加的内容
	*/
	public function forwardWeibo($id,$text=null);
}

2 插件实体类

该类是插件的实体,在Plugins.class.php中定义,负责调用Dao类来实现各种功能,包括输入输出,用户配置,授权管理

/**
*	插件实体类
*	@Author:Summer
*	@data:  2015-06-28
*	@site:  http://www.xtwind.com
*/
class Plugins{
	/**
	*	数据获取类对象
	*/
	private $dao;

	/**
	*	插件显示别名
	*/
	private $slug = 'weibo-wall';

	/**
	*	插件页url
	*/
	private $plugUrl ;

	/*
	*	插件构造
	* 	@param 用户数据操作类
	*/
	public function __construct(Dao $obj);

	/**
	*	启用插件,注册钩子,调用用户函数,删除授权,发表微博
	* 	@param array 插件设置选项关联数组,key必须为对应的操作方法,该数组中的键会被注册为wordpress相应钩子
	* 	@param array 需要过滤的动作,该数组中键不会被注册为钩子,但是会作为方法被调用,值为方法的参数
	*/
	public function run($arr1=null,$arr2=null);

	/**
	*	插件主页显示
	*/
	public function display_function();

	/**
	*	新文章同步发布微博
	* 	@param 	int 文章ID
	*/
	public function publish_post($postID);

	/**
	*	删除文章同步删除微博
	* 	@param int 文章ID 
	*/
	public function before_delete_post($postID);

	/**
	*	收到评论同步到微博评论
	*	@param id 评论id
	*/
	public function comment_post($commentID);

	/**
	*	关注作者
	*/
	public function follow_author($userid);

	/**
	*	用户微博数据获取
	*/
	public function weiboOuput( $atts=null, $content = null );
	/**
	*	数据页面输出
	*/
	public function showWeibo();

	/**
	*	图片URL处理
	* 	@param string
	*/
	private function getOriginalUrl($url);

	/**
	*	时间转换
	* 	@param string
	*/
	private function Sec2Time($time);

	/**
	*	插件设置key获取
	* 	@param string 	需要设置的key
	*/
	private function setting_key($key,$func=false);

	/**
	*	插件设置value获取
	* 	@param string 	需要获取的value
	*/
	private function get_setting($key,$func=false);

	/**
	*	插件设置删除
	*/	
	private function del_setting();

	/**
	*	提示信息
	*	@param string
	*/
	private function noticeMsg($msg);
}

3 服务端认证操作

该接口定义所有用户认证需要的操作,包括获取授权,删除授权,检查授权等,在AuthDao.php定义

/**
*	认证操作类接口
*	@author 夏天
*	@date 2015年6月18日
*	@site http://www.xtwind.com
*/
interface AuthDao{
	/**
	*	设置用户AccessToken
	*	@return boolean
	*/
	public function setAccessToken();

	/**
	*	获取用户AccessToken
	*	@return String 
	*/
	public function getAccessToken();

	/**
	*	删除用户AccessToken
	*	@return boolean
	*/
	public function delAccessToken();

	/**
	*	判断用户AccessToken是否存在
	*	@return boolean
	*/
	public function isLogin();

	/**
	*	获取认证跳转url
	*	@return string
	*/
	public function getAuthUrl();

	/**
	*	授权过期时间
	*	@return string
	*/
	public function getAuthOver();
}

4 服务端微博操作

该接口定义所有与用户微博操作相关的方法,包括发表微博,读取微博,读取信息,删除微博等等,在WeiboDao.php定义

/**
*	微博操作类接口
*	@author 夏天
*	@date 2015年6月18日
*	@site http://www.xtwind.com
*/

interface WeiboDao {

	/**
	*	获取用户微博信息列表
	*	@param  int 	获取数量
	*	@param  int 	类型过滤  0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0。
	*	@return String
	*/
	public function getWeibo();

	/**
	*	获取用户基本信息
	*	@return Array
	*/
	public function getUser();

	/**
	*	发布微博
	*	@return Array 返回微博数据数组
	*/
	public function weiboPub($content,$imgUrl);

	/**
	*	删除微博
	*	@return Array 返回被删除微博数据数组
	*/
	public function weiboDel($weiboID);

	/**
	*	发布一条评论
	*	@param integer 微博ID
	*	@param string  评论内容
	*/
	public function sendComment($id,$comment);

	/**
	*	关注一个用户
	*	@param 用户ID或者名字
	*	@return 返回关注者信息
	*/
	public function followUser($user);

	/**
	*	转发微博
	*	@param int 微博id
	*	@param string 添加的信息
	*/
	public function forwardWeibo($id,$text=null);
}

5 服务端数据提供接口

该接口负责提供数据给客户端,以及一些客户端需要的操作,继承于微博操作接口,在APIDao.php中定义

/**
*	对外提供服务类接口,继承于微博操作接口
*	@author 夏天
*	@date 2015年6月18日
*	@site http://www.xtwind.com
*/
interface DaoAPI extends WeiboDao{
	/**
	*	删除用户AccessToken
	*	@return boolean
	*/
	public function delAccessToken();

	/**
	*	判断用户AccessToken是否存在
	*	@return boolean
	*/
	public function isLogin();

	/**
	*	获取认证跳转url
	*	@return string
	*/
	public function getAuthUrl();

	/**
	*	授权过期时间
	*	@return string
	*/
	public function getAuthOver();
}

6 服务端回调操作

该类封装与微博开放平台通信获取用户AccessToken后的回调操作

class Callback {
	/**
	*	微博认证类对象
	*/
	private $authObj;

	/**
	*	构造函数
	*	@param AuthDaoImpl 微博认证对象
	*/
	public function __construct(AuthDaoImpl $obj);

	/**
	*	认证回调操作,保存AccessToken
	* 	@return boolean
	*/
	public function callback();
}

7 服务端应用入口

该入口主要是分发回调请求,以及创建RPC实例

if($_GET['code']){
	$keys = array(
			'code' => $_GET['code'],
			'redirect_uri' => APP_CALLBACK
		);
	$back = new Callback(new AuthDaoImpl($_GET['state'],$keys));
	if($back->callback()){
		header('Location: '.$_GET['state'].'/wp-admin/options-general.php?page=weibo-wall');
	}
	exit;
}
if($_GET['user']){
	$server = new Yar_Server(new API($_GET['user']));
	try{
		$server->handle();
	}catch(Exception $e){
		echo "感谢您使用微博墙!";
	}
}

7 客户端应用入口

该入口实例化插件实体类,并且启用插件

$plu = new Plugins(new Dao(get_bloginfo( 'url' )));
$plu -> run(get_option('weibo_wall'),get_option('weibo_func'));

8 总结

整个过程就是这样,业务逻辑非常简单,代码也很易懂。在使用的过程发觉Yar真的很简单实用,而且是可并行化的。不过在这里并没有体现出来,可以再做一些优化处理。该插件的客户端依赖于Yar框架,这是一个基于C语言开发的拓展。但是没有该框架拓展也没关系,我们已经给出了Yar的纯PHP实现,你完全可以不去理会这个就能使用,但还是建议你使用Yar。

插件在设计的时候只提供了很少的功能,但是有些人需要其他的功能,那怎么办呢?这方面我们也是有考虑,所以在设计的时候该插件的拓展性非常良好,不过你要有一些PHP编程的功底。

如何拓展他的功能?

1.联系作者,告诉你需要的功能
2.作者开发相应的数据API
3.你在本地Dao.class.php调用API
4.在Plugins.class.php中获取数据并执行相应业务逻辑

以上是分享一个基于Yar的WordPress微博墙插件的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:segmentfault。如有侵权,请联系admin@php.cn删除
我可以在3天内学习WordPress吗?我可以在3天内学习WordPress吗?Apr 09, 2025 am 12:16 AM

能在三天内学会WordPress。1.掌握基础知识,如主题、插件等。2.理解核心功能,包括安装和工作原理。3.通过示例学习基本和高级用法。4.了解调试技巧和性能优化建议。

WordPress是CMS吗?WordPress是CMS吗?Apr 08, 2025 am 12:02 AM

WordPress是内容管理系统(CMS)。它提供内容管理、用户管理、主题和插件功能,支持创建和管理网站内容。其工作原理包括数据库管理、模板系统和插件架构,适用于从博客到企业网站的各种需求。

WordPress有什么用?WordPress有什么用?Apr 07, 2025 am 12:06 AM

wordpressgood forvortalyanewebprojectDuetoItsAsatilityAsacms.itexcelsin:1)用户友好性,允许Aeserywebsitesetup; 2)sexibility andcustomized andcustomization and numerthemesandplugins; 3)seoop timigimization; and4)and4)

我应该使用Wix或WordPress吗?我应该使用Wix或WordPress吗?Apr 06, 2025 am 12:11 AM

Wix适合没有编程经验的用户,WordPress适合希望有更多控制和扩展能力的用户。1)Wix提供拖放式编辑器和丰富模板,易于快速搭建网站。2)WordPress作为开源CMS,拥有庞大社区和插件生态,支持深度自定义和扩展。

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

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

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

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

对于初学者来说,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处理数据,支持性能优化。

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无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能