本站试过好几种( E享乐和大发贱志)文章发布后自动发一条新浪微博但是都不行,我想多半是登录信息的问题,下面这种方法是结合上述两种方法实现的文章发布后自动发一条新浪微博。
获取 Access Token
如果应用还在审核中:
申请方法:https://img1.ixu.me/get-weibo-access_token.html
如果应用已经通过审核:
API测试工具:http://open.weibo.com/tools/console
代码
将以下代码填上自己的 Access Token
后放入主题函数模版 functions.php
。代码有注释,希望可以帮助大家理解一点。
/*
文章发表后自动发一条新浪微博(标题+摘要+链接+图片)
作者:E享乐(www.exiang2.com)
*/
add_action('publish_post', 'E_post_weibo');//钩子,在文章发布时执行
function E_post_weibo($post_ID) {
$token = '2.00xxxxxxxxxxxxxxxxxxxxx';//填写你的access_token
$get_post_info = get_post($post_ID);//获取文章信息
if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) {
$status = strip_tags( $_POST['post_title'] ) .':'.mb_strimwidth(strip_tags(apply_filters('the_content',$_POST['post_content'])),0,200,"...").get_permalink($post_ID);//微博文字内容 标题+摘要+链接
if(preg_match('/<img.+src=\"?(.+\.(jpg|gif|bmp|bnp|png))\"?.+>/i',$_POST['post_content'],$match)){//判断文章是否包含图片
$img = stripslashes(preg_replace('/["]+/i','',$match[1]));//输出第一张图片地址
$url = 'https://api.weibo.com/2/statuses/upload_url_text.json';//api接口
$data = "access_token=" . $token . "&status=" . $status."&url=".$img;
}
else{//无图片则使用 2/statuses/update 接口
$url = 'https://api.weibo.com/2/statuses/update.json';
$data = "access_token=" . $token . "&status=" . $status;
}
json_decode(weibo_do_post($url,$data));//执行curl模拟POST
}
}
//curl模拟POST
function weibo_do_post($url, $data) {
$ch = curl_init ();
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;
}
前些日子试了下还可以同步到微博,好像现在不可以了,取消了statuses/upload_url_text这个接口啊 :roll: