搜尋
首頁CMS教程&#&按分享一個基於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尊渡假赌尊渡假赌尊渡假赌

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)