我今天所做的是最重要的,因为我将永远不会再有今天

同步WordPress 博客日志到新浪微博

技术文档 18199浏览 0评论

实现WordPress和微博进行连接,并同步WordPress日志到新浪、QQ等微博的相关插件很多,还可以实现其他很多的复杂功能,但是我只是想要把发布的WordPress日志同步到新浪微博,太过复杂的功能暂时用不上。而且插件理论上是越少越好,于是乎,自己改造一下主题,使其支持同步的功能。

我是基于Loosky皮肤进行修改的,你如果要基于自己的皮肤进行修改的话,请参照我的步骤自行进行修改。基本用法是一样的。

1、需要的相关文件下载:点击下载

需要一个图片以及新浪微博的认证类文件,下载后放到皮肤的相应位置,认证类文件需要在functions.php中包含进去。

当然你还需要授权的相关信息,将如下信息放到你的functions.php中:

define('Loosky_AKEY', '2783708081');
define('Loosky_SKEY', '18cc0b9bf549692c80919df1bda49a71');

2、在主题的后台管理页面中增加微博连接的页面代码:

<tr valign="top">
<th scope="row"><?php _e('<h5>绑定新浪微博</h5>'); ?></th>
<td>
<?php
if($tok = get_option('sina_access_token')){
$sina_client = new SinaClient(Loosky_AKEY, Loosky_SKEY, $tok['oauth_token'], $tok['oauth_token_secret']);
$sina_profile = $sina_client->verify_credentials();
}
if ($sina_profile['name']) {
?>
<strong><t>已经绑定新浪微博账号</t>:</strong> &nbsp;
<a href="http://t.sina.com.cn/<?php echo $sina_profile['id'] ?>" target="_blank"><?php echo $sina_profile['name'] ?></a>。
<a href="<?php echo menu_page_url('Looskyadmin',false).'&delete=1' ?>">删除绑定或者绑定其他帐号?</a>
<?php }else{?>
<div><input type="image" src="<?php echo get_bloginfo('template_directory')?>/images/btn_bind_sina_account.gif" name="do_sina_login" value=" " /></div>
<input type="hidden" name="sina_call_url" value="<?php echo menu_page_url('Looskyadmin',false);?>" />
<?php }?>
</td>
</tr>

3、微博连接的相关处理功能代码:

//出现新浪微博连接页面
if ($_POST['do_sina_login_x']){
$sina_oauth = new SinaOAuth(Loosky_AKEY, Loosky_SKEY);

$sina_keys = $sina_oauth->getRequestToken();
$sina_auth_url = $sina_oauth->getAuthorizeURL($sina_keys['oauth_token'], false, $_POST['sina_call_url']);

$_SESSION['sina_keys'] = $sina_keys;
redirect($sina_auth_url);
}

//进行微博的相关操作
if($_GET['delete']) {
delete_option('sina_access_token');
}
else if ($_REQUEST['oauth_verifier'])
{
$callback = menu_page_url('Looskyadmin',false);
$sina_oauth = new SinaOAuth(Loosky_AKEY, Loosky_SKEY,$_SESSION['sina_keys']['oauth_token'], $_SESSION['sina_keys']['oauth_token_secret']);
$tok = $sina_oauth->getAccessToken($_REQUEST['oauth_verifier']);

$sina_client = new SinaClient(Loosky_AKEY, Loosky_SKEY, $tok['oauth_token'], $tok['oauth_token_secret']);
$tok['sina_profile'] = $sina_client->verify_credentials();

update_option('sina_access_token',$tok);
redirect($callback);
}

ok,到了这一步,你的博客已经和新浪微博绑定好了,那么接下来就是要将你发布的WordPress日志同步到新浪微博了。

4、同步WordPress日志到新浪微博。

在functions.php中添加如下功能代码:

/*
同步 WordPress 博客日志到新浪微博
*/

function update_sina_t($status=null,$picture){
$tok = get_option('sina_access_token');
$to = new SinaClient(Loosky_AKEY, Loosky_SKEY,$tok['oauth_token'], $tok['oauth_token_secret']);
$status = urlencode($status);
if ($picture)
{
$to->upload($status, $picture);
}
else
{
$to->update($status);
}
}

add_action('publish_post', 'publish_post_2_sina_t', 0);
function publish_post_2_sina_t($post_ID){
$tok = get_option('sina_access_token');
if(!$tok) return;
$sina_t = get_post_meta($post_ID, 'sina_t', true);
if($sina_t) return;
$c_post = get_post($post_ID);
$status = '来自博客:'.$c_post->post_title.' '.get_permalink($post_ID);
update_sina_t($status);
add_post_meta($post_ID, 'sina_t', 'true', true);
}

现在你发布的每篇日志,都会同步一条信息到你的微博。当然同步的格式你自己可以进行修改,具体在 $status变量(上文红色标记处)中。

我的新浪微博:http://t.sina.com.cn/loosky/,欢迎围观并查看效果。

转载请注明:自由的风 » 同步WordPress 博客日志到新浪微博

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (15)


  1. 我是先同步到嘀咕
    再用嘀咕自动同步到新浪微博,呵呵

    浩子2011-04-23 13:49 回复
  2. 还是算了~~~ 发文章可能会很吃力~~

    IM路人2011-04-23 14:50 回复
  3. @浩子
    原理应该是差不多的。

    @IM路人
    目前感觉还行。呵呵纯属折腾而已。

    自由的风2011-04-23 16:58 回复
  4. 请问第一步当中,授权信息在哪里取得?谢谢

    moon2011-12-20 19:57 回复

  5. 我用的方法没这么麻烦
    因为的方法没有绑定这一步

    阿梓喵2012-03-07 09:24 回复
    • 这个方法现在好像不行了,API接口有些问题。

      自由的风2012-03-07 11:23 回复
  6. 那个下载的文件放在哪?还有每段代码都放在哪呢?我对php都不懂,能说更详细点吗? :???:

    brian2012-03-09 13:20 回复
  7. 我想知道如何改造成能绑定用户登陆的功能,比如管理员绑定了自己的微博后就能登陆博客管理了,能贴一下代码吗?

    笨小孩2012-03-13 14:27 回复
  8. 請教博主,第三步中的代码放在什么地方?谢谢!~

    85Ryan2012-07-05 12:55 回复
    • 这个代码似乎现在不能用了,新浪更换了接口

      自由的风2012-07-05 22:58 回复