之前,从 WordPress 最新日志同步到 Twitter 我都是用手动的,不仅要先穿墙,还要复制日志标题,还要手动生成短网址,虽然已经习以为常,不过还是有点麻烦的。如果有一条龙服务的方法那就最好啦,果不其然,让我找到了方法,而且是免插件的!方法来自 qiqiboy,并且已经制作成了插件,非常感谢 qiqiboy 还发给我此插件供内测使用,能做插件的才是真正的高手呀,不过 qiqiboy 暂时没有公布此插件的下载地址,需要的朋友可以问 qiqiboy 要一个玩玩。
我这里就转载一下 qiqiboy 非插件实现同步 WordPress 日志到 Twitter 的方法,把以下代码复制到 WordPress 主题文件夹下的 functions.php 中即可:
add_action('publish_post', 'get_post_message');
function get_post_message($id)
{
if($_POST['action'] != "autosave" and $_POST['post_status'] != "draft")
{
$mypost = get_post($id);
$title = strip_tags(get_the_title($id));
$postlink = get_permalink($id);
if($_POST['original_post_status'] == 'publish')
{
if (time() - strtotime($mypost->post_date) < 60*60*24*1 )
{
return;
}
$title = "【博文修改】" . $title;
}
else
{
$title = "【博客更新】" . $title;
}
if ($shortlink=="")
{
$shortlink = "http://u.wange.im/api.php?url=" . $postlink;//这里是我的短网址 API,你也可以换成 qiqiboy 的 u.boy.im
}
$url_contents = file_get_contents($shortlink);
$temp_length = (strlen($title)) + (strlen($url_contents));
if($temp_length > 137)
{
$remaining_chars = 134 - strlen($url_contents);
$title = substr($title, 0, $remaining_chars);
$title = $title . "...";
}
$message = $title . " - " . $url_contents;
return (wp_to_twitter($message));
}
}
function wp_to_twitter($message)
{
$username = "twitter用户名";
$password = "密码";
$url = 'http://twitter.com/statuses/update.xml';//国外用户使用这个,国内的用户则通过下面的api代理来发布。(代理可能会不稳,出现更新失败)
//$url = 'http://nest.onedd.net/api/statuses/update.xml';
/*这里有两种方法,一种是使用curl函数,如果你的主机不支持curl函数,则还可以使用下面一种。
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "$url");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
*/
$body = array( 'status'=>$message );
$headers = array( 'Authorization' => 'Basic '.base64_encode("$username:$password") );
$request = new WP_Http;
$result = $request->request( $url , array( 'method'=>'POST', 'body'=>$body, 'headers'=>$headers) );
}
function get_post_message($id)
{
if($_POST['action'] != "autosave" and $_POST['post_status'] != "draft")
{
$mypost = get_post($id);
$title = strip_tags(get_the_title($id));
$postlink = get_permalink($id);
if($_POST['original_post_status'] == 'publish')
{
if (time() - strtotime($mypost->post_date) < 60*60*24*1 )
{
return;
}
$title = "【博文修改】" . $title;
}
else
{
$title = "【博客更新】" . $title;
}
if ($shortlink=="")
{
$shortlink = "http://u.wange.im/api.php?url=" . $postlink;//这里是我的短网址 API,你也可以换成 qiqiboy 的 u.boy.im
}
$url_contents = file_get_contents($shortlink);
$temp_length = (strlen($title)) + (strlen($url_contents));
if($temp_length > 137)
{
$remaining_chars = 134 - strlen($url_contents);
$title = substr($title, 0, $remaining_chars);
$title = $title . "...";
}
$message = $title . " - " . $url_contents;
return (wp_to_twitter($message));
}
}
function wp_to_twitter($message)
{
$username = "twitter用户名";
$password = "密码";
$url = 'http://twitter.com/statuses/update.xml';//国外用户使用这个,国内的用户则通过下面的api代理来发布。(代理可能会不稳,出现更新失败)
//$url = 'http://nest.onedd.net/api/statuses/update.xml';
/*这里有两种方法,一种是使用curl函数,如果你的主机不支持curl函数,则还可以使用下面一种。
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "$url");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
*/
$body = array( 'status'=>$message );
$headers = array( 'Authorization' => 'Basic '.base64_encode("$username:$password") );
$request = new WP_Http;
$result = $request->request( $url , array( 'method'=>'POST', 'body'=>$body, 'headers'=>$headers) );
}
效果就可以见我 Twitter (@wange1228)上更新的最新消息,好消息:qiqiboy 又更新了此文,推出了在 Twitter 中同步 WordPress 标签的方法,而且还有同步 WordPress 日志到新浪微博的方法,有兴趣的朋友赶去看看。
-
非插件同步 WordPress 日志到嘀咕2011年03月31日 -
WordPress 非插件调用最新 Twitter2010年02月11日 -
WordPress 免插件输出最新 Twitter2010年02月10日 -
Wordpress 同步日志到 PageCookery 微博客2011年02月7日