欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

WordPress文章同步到新浪微博的几种方法

shiping 的头像
信现在有很多网友都使用了微博,微博可是相当的火啊!使用WordPress的博主中,使用微博的人数可能会更多,因为在博客圈中存在一种观点:微博是一个很好的推广平台。新浪微博算是一个比较火的,可能你早就听说过如何将WordPress文章同步发布到新浪微博,但是我这里还要罗嗦一下,可能跟你以前看到的不太一样。插件的方法我就不介绍了,需要的上网搜。

新浪微博

方法一:关联博客

该方法已失效!方法一其实很简单,直接使用新浪微博的关联博客功能就可以了,使用方法:点击新浪微博右上角的"工具"菜单,再在点击"关联博客",填上你的博客链接即可!这样,你的博客每次有文章更新,就会有同时发一条以下格式的微博到新浪微博:文章标题 + 文章URL

方法二:微博开放平台接口

此方法需要你自行申请appkey(当然,用我的也可以)方法一只能以文章标题 + 文章URL的形式同步到新浪微博,不能自定义微博内容。而使用新浪微博的开放平台接口,可以大大提高自由度,不过需要编写一些代码,其实很简单,复制粘贴代码就可以了。用文本编辑器打开你当前使用的主题目录下的functions.php,将以下代码复制到第一个 <?php 下面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 2015年3月5日更新
function post_to_sina_weibo( $post_ID ) {
    if( wp_is_post_revision( $post_ID ) ) return;
    
    // 将 abc 替换成你的新浪微博登陆名
    $username = "abc";
    // 将 123 替换成你的新浪微博密码
    $password = "123";
    // 将 733750190 替换成你的微博开放平台的App Key
    $appkey = "733750190";
    
    if ( get_post_status( $post_ID ) == 'publish' && $_POST['original_post_status'] != 'publish' ) {
        $request = new WP_Http;
        $status = strip_tags( $_POST['post_title'] ) . get_permalink( $post_ID );
        $api_url = 'https://api.weibo.com/2/statuses/update.json';
        $body = array( 'status' => $status, 'source'=> $appkey);
        $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);

好了,以后每当你的WordPress博客有文章更新,就会有同时发一条以下格式的微博到新浪微博:文章标题 + 文章URL。可能你不喜欢文章标题 + 文章URL这种形式,现在我教你怎么自定义发布到新浪微博的格式。以下介绍几种常见的微博格式:

文章摘要 + 文章URL

WordPress文章编辑页都有个"摘要"输入框,这里可以输入你的文章摘要。如果你想以文章摘要 + 文章URL的形式发布到新浪微博,可以将以上代码中14行改成:

1
$status = strip_tags( $_POST['excerpt'] ) . ' ' . get_permalink( $post_ID );

如果你只想发布摘要,可以改成:

1
$status = strip_tags( $_POST['excerpt'] );

这样就相当于直接在你WordPress博客上发布新浪微博了!

只输出文章URL

如果你只想发布一条文章链接到新浪微博,那就将以上代码14行改成:

1
$status = get_permalink( $post_ID );

不过这种方式貌似没什么意义!

显示你的地理位置:

新浪微博还有一个很有趣的功能,那就是可以根据你的IP来显示你的具体地理位置,可以在地图上标示你的位置(当然,这个位置不可能具体到你家门口)。

新浪微博显示你的具体位置

如果你希望同步到新浪微博的文章添加这个功能,可以将以上代码中的16行改成:

1
2
3
$location = $request->get( 'http://api.map.sina.com.cn/i/ip2xy.php?ip='.getenv("REMOTE_ADDR").'&source=733750190' ); 733750190 替换成你的App Key
$xy = explode( ',', simplexml_load_string($location['body'])->item->coordinate ); 
$body = array( 'status' => $status, 'source' =>'1134914270', 'lat' => $xy[1], 'long' => $xy[0] );

当然,如果你不希望别人窥探你的位置,就别用这个功能!

来自 http://www.ludou.org/wordpress-post-to-sina-weibo.html
 

wordpress发布文章时同步到新浪微博

2015年04月06日 PHP开源系统 评论 4 条 阅读 24 views 次

在百度进行搜索文章时,发现不少的博主文章都是有好几条的搜索结果,原来除了自己的官网博客外,还将文章同步到了新浪微博中,怪不得有怎么多条搜索的结果呢,这样做的最大好处就是让微博给自己的站点进行了曝光,尤其对于新站点来说,这样的功能就更不能缺少了,因为新站发布的文章百度都要过一段时间才能收录,因为没有百度蜘蛛过来抓取,但百度蜘蛛对于新浪微博可就不同了,新浪微博的权重很高,所以导致百度的抓取是最频繁的,所以一旦我们将文章发布到新浪微博上面,就会吸引来蜘蛛,然后会顺着新浪微博来到自己的博客中进行收录,哪么下面夏日博客就来教大家如何将 wordpress 的文章同步发送到新浪微博中,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
class sync_sina {
 
public $access_token = "";//access_token
 
public $default_image = "";//默认图片地址
 
public $host = "https://api.weibo.com/2/";
 
public static $boundary = '';
 
function __construct(){
/**
** 事件绑定
**/
add_action('publish_post', array($this, 'new_post_photo'));
}
 
function do_mu_post($url, $data) {
$ch = curl_init ();
$headers = array("Content-Type:multipart/form-data;boundary=". self::$boundary);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, TRUE );
curl_setopt ( $ch, CURLOPT_POST, TRUE );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$ret = curl_exec ( $ch );
curl_close ( $ch );
return $ret;
}
 
function build_http_query_multi($params) {
if (!$params) return '';
uksort($params, 'strcmp');
$pairs = array();
self::$boundary = $boundary = uniqid('------------------');
$MPboundary = '--'.$boundary;
$endMPboundary = $MPboundary. '--';
$multipartbody = '';
foreach ($params as $parameter => $value) {
if( in_array($parameter, array('pic', 'image')) && $value{0} == '@' ) {
$url = ltrim( $value, '@' );
$content = file_get_contents( $url );
$array = explode( '?', basename( $url ) );
$filename = $array[0];
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'Content-Disposition: form-data; name="' . $parameter . '"; filename="' . $filename . '"'. "\r\n";
$multipartbody .= "Content-Type: image/unknown\r\n\r\n";
$multipartbody .= $content. "\r\n";
} else {
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'content-disposition: form-data; name="' . $parameter . "\"\r\n\r\n";
$multipartbody .= $value."\r\n";
}
}
$multipartbody .= $endMPboundary;
return $multipartbody;
}
 
function get_image($post_id){
if( has_post_thumbnail($post_id) ){
$timthumb_src = wp_get_attachment_image_src(get_post_thumbnail_id($post_id),'full');
$output = $timthumb_src[0];
} else {
$content = get_post_field('post_content', $post_id);
$defaltthubmnail = $this->default_image;
preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $content, $strResult, PREG_PATTERN_ORDER);
$n = count($strResult[1]);
if($n > 0){
$output = $strResult[1][0];
} else {
$output = $defaltthubmnail;
}
}
return $output;
}
 
function new_post_photo($post) {
global $post;
if( $post->post_status != "publish" ){
$token = $this->access_token;
$url = $this->host ."statuses/upload.json";
$status = "夏日博客刚刚发布了新文章《".get_the_title()."》。".get_permalink();
$status .= mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0,180,"..."); //顺手加了个文章摘要,不喜欢就去掉啦
$pic_path = self::get_image($post->ID);
$params = array();
$params['access_token'] = $token;
$params['status'] = $status;
$params['pic'] = '@'.$pic_path;
$body = self::build_http_query_multi($params);
$result = self::do_mu_post($url,$body);
 
}
}
}
$HMT = new sync_sina();

将这段代码直接放到主题 functions.php 文件中即可,最后还要注意几点,使用本功能的时候需要先进行新浪微博官网的审核,另外需要服务器支持 file_get_contents函数以及 curl 组件,缺一不可额。

 
 

来自  http://www.xiariboke.com/soft/1640.html

普通分类: