wordpress

WordPress代码实现文章发布后自动发一条新浪微博(Access Token)

2017-5-17 2177字 19,129

本站试过好几种( E享乐大发贱志)文章发布后自动发一条新浪微博但是都不行,我想多半是登录信息的问题,下面这种方法是结合上述两种方法实现的文章发布后自动发一条新浪微博。

获取 Access Token

如果应用还在审核中:

申请方法:https://img1.ixu.me/get-weibo-access_token.html

如果应用已经通过审核:

API测试工具:http://open.weibo.com/tools/console

wordpress-post-article-send-sinaweibo-access-token-2

代码

将以下代码填上自己的 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;
}
版权声明:Shire 发表于 2017-5-17
转载请注明: WordPress代码实现文章发布后自动发一条新浪微博(Access Token) | Shire

评论

  1. 秋毅     Windows 10 /    Google Chrome

    前些日子试了下还可以同步到微博,好像现在不可以了,取消了statuses/upload_url_text这个接口啊 :roll:

    广东省广州市 回复

该文章已经关闭评论