Im heutigen Zeitalter des mobilen Internets ist Weibo zu einem unverzichtbaren sozialen Werkzeug im Leben eines jeden geworden. WordPress ist das beliebteste Blogging-System der Welt. Die Verbindung Ihres Blogs mit Sina Weibo und die Nutzung der starken Benutzerbasis von Weibo können Ihrer Website nicht nur enormen Traffic bescheren, sondern auch einen unermesslichen Wert bringen.
WordPress Weibo Wall ist ein solches Tool. Dies ist kein gewöhnliches Plug-in, sondern ein Plug-in, das auf SAE basiert und auf Yar basiert. Es ist sehr leichtgewichtig, im Gegensatz zu anderen Plug-Ins, die viele tolle, aber unpraktische Funktionen bieten, die nicht nur aufgeblasen, sondern auch langsamer sind. Dies ist ein auf Yar basierendes Plug-in, das in der zugrunde liegenden C-Sprache entwickelt wurde und eine hervorragende Leistung aufweist. Und es ist sehr skalierbar und kann Ihnen die folgenden Funktionen bieten:
1. Persönliche Weibo-Pinnwand
2. Artikelkommentare mit Sina Weibo synchronisieren
Als nächstes stellen wir die Grundstruktur vor:
/** * * 用户数据获取类 * @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 Plug-In-Entitätsklasse
Diese Klasse ist die Entität des Plug-Ins und in „Plugins“ definiert. Sie ist für den Aufruf der Dao-Klasse verantwortlich, um verschiedene Funktionen zu implementieren, einschließlich Eingabe und Ausgabe, Benutzerkonfiguration und Autorisierungsverwaltung
/** * 插件实体类 * @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 Serverseitige Authentifizierungsvorgänge
Diese Schnittstelle definiert alle Vorgänge, die für die Benutzerauthentifizierung erforderlich sind, einschließlich des Erhaltens der Autorisierung und des Löschens der Autorisierung, der Überprüfung der Autorisierung usw. sind in AuthDao.php definiert.
/** * 认证操作类接口 * @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 Serverseitiger Weibo-Vorgang
Diese Schnittstelle definiert alle Methoden im Zusammenhang mit Benutzer-Weibo-Vorgängen, einschließlich dem Posten von Weibo, dem Lesen von Weibo, dem Lesen von Informationen und dem Löschen von Weibo usw., definiert in 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 Serverseitige Datenbereitstellungsschnittstelle
Diese Schnittstelle ist für die Bereitstellung von Daten für die verantwortlich Der Client sowie einige vom Client benötigte Vorgänge werden von der Weibo-Betriebsschnittstelle geerbt und in APIDao.php definiert der Benutzer AccessToken
/** * 对外提供服务类接口,继承于微博操作接口 * @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(); }
7 Serverseitiger Anwendungseingang
Dieser Eingang wird hauptsächlich zum Verteilen von Rückrufanforderungen und zum Erstellen von RPC-Instanzen verwendet
class Callback { /** * 微博认证类对象 */ private $authObj; /** * 构造函数 * @param AuthDaoImpl 微博认证对象 */ public function __construct(AuthDaoImpl $obj); /** * 认证回调操作,保存AccessToken * @return boolean */ public function callback(); }
7 Client-Anwendungseingang
Dieser Eingang instanziiert die Plug-in-Entitätsklasse und ermöglicht das Plug-in in
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 "感谢您使用微博墙!"; } }
8 Zusammenfassung
Der gesamte Prozess ist so. Die Geschäftslogik ist sehr einfach und der Code ist leicht zu verstehen. Während des Nutzungsprozesses habe ich festgestellt, dass Yar wirklich einfach und praktisch ist und parallelisiert werden kann. Dies spiegelt sich hier jedoch nicht wider und es können einige Optimierungen vorgenommen werden. Der Client dieses Plug-Ins basiert auf dem Yar-Framework, einer auf der C-Sprache basierenden Erweiterung. Es spielt jedoch keine Rolle, ob Sie über diese Framework-Erweiterung verfügen. Wir haben bereits eine reine PHP-Implementierung von Yar bereitgestellt. Sie können sie verwenden, ohne darauf zu achten, es wird jedoch dennoch empfohlen, Yar zu verwenden.
Das Plug-in soll nur wenige Funktionen bereitstellen, aber manche Leute benötigen andere Funktionen. Was sollen wir also tun? Wir haben auch diesen Aspekt berücksichtigt, sodass das Plug-in beim Design sehr skalierbar ist, Sie müssen jedoch über einige PHP-Programmierkenntnisse verfügen.
Wie kann man seine Funktionen erweitern?
1. Kontaktieren Sie den Autor und teilen Sie Ihnen die Funktionen mit, die Sie benötigen.
3. Sie rufen die API in der lokalen Dao.class.php auf und führen Sie die entsprechende Geschäftslogik aus