WordPress文章同步到新浪微博的幾種方法
來源:程序員人生 發布時間:2014-02-15 11:24:10 閱讀次數:2840次
相信現在有很多網友都使用了微博,微博可是相當的火啊!使用WordPress的博主中,使用微博的人數可能會更多,因為在博客圈中存在一種觀點:微博是一個很好的推廣平臺。新浪微博算是一個比較火的,可能你早就聽說過如何將WordPress文章同步發布到新浪微博,但是我這里還要羅嗦一下,可能跟你以前看到的不太一樣。插件的方法我就不介紹了,需要的上網搜。
方法一:關聯博客
方法一其實很簡單,直接使用新浪微博的關聯博客功能就可以了,使用方法:點擊新浪微博右上角的"工具"菜單,再在點擊"關聯博客",填上你的博客鏈接即可!這樣,你的博客每次有文章更新,就會有同時發一條以下格式的微博到新浪微博:文章標題 + 文章URL
方法二:微博開放平臺接口
方法一只能以文章標題 + 文章URL的形式同步到新浪微博,不能自定義微博內容。而使用新浪微博的開放平臺接口,可以大大提高自由度,不過需要編寫一些代碼,其實很簡單,復制粘貼代碼就可以了。用文本編輯器打開你當前使用的主題目錄下的functions.php,將以下代碼復制到第一個PHP頁面:
function post_to_sina_weibo($post_ID) {
if( wp_is_post_revision($post_ID) ) return;
// 將 abc 替換成你的新浪微博登陸名
$username = "abc";
// 將 123 替換成你的新浪微博密碼
$password = "123";
$get_post_info = get_post($post_ID);
if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) {
$request = new WP_Http;
$status = strip_tags( $_POST['post_title'] ) . ' ' . urlencode( get_permalink($post_ID) );
$api_url = 'http://api.t.sina.com.cn/statuses/update.json';
$body = array( 'status' => $status, 'source'=>'1134914270');
$headers = array( 'Authorization' => 'Basic ' . base64_encode("$username:$password") );
$result = $request->post( $api_url , array( 'body' => $body, 'headers' => $headers ) );
}
}
add_action('publish_post', 'post_to_sina_weibo', 0);
以上代碼15行的1134914270是新浪開放平臺的appkey,如果你有appkey的話可以改成你的自己的。好了,以后每當你的WordPress博客有文章更新,就會有同時發一條以下格式的微博到新浪微博:文章標題 + 文章URL。可能你不喜歡文章標題 + 文章URL這種形式,現在我教你怎么自定義發布到新浪微博的格式。以下介紹幾種常見的微博格式:
文章摘要 + 文章URL
WordPress文章編輯頁都有個"摘要"輸入框,這里可以輸入你的文章摘要。如果你想以文章摘要 + 文章URL的形式發布到新浪微博,可以將以上代碼中13行改成:
$status = strip_tags( $_POST['excerpt'] ) . ' ' . urlencode( get_permalink($post_ID) );
如果你只想發布摘要,可以改成:
$status = strip_tags( $_POST['excerpt'] );
這樣就相當于直接在你WordPress博客上發布新浪微博了!
只輸出文章URL
如果你只想發布一條文章鏈接到新浪微博,那就將以上代碼13行改成:
$status = urlencode( get_permalink($post_ID) );
不過這種方式貌似沒什么意義!
顯示你的地理位置:
新浪微博還有一個很有趣的功能,那就是可以根據你的IP來顯示你的具體地理位置,可以在地圖上標示你的位置(當然,這個位置不可能具體到你家門口)。
如果你希望同步到新浪微博的文章添加這個功能,可以將以上代碼中的15行改成:
$location = $request->get( 'http://api.map.sina.com.cn/i/ip2xy.php?ip='.getenv("REMOTE_ADDR").'&source=1134914270' );
$xy = explode( ',', simplexml_load_string($location['body'])->item->coordinate );
$body = array( 'status' => $status, 'source' =>'1134914270', 'lat' => $xy[1], 'long' => $xy[0] );