wordpress发布文章后自动同步图文到新浪微博的方法
经常上新浪微博并且关注了不少官网认证号的小伙伴一定会发现很多官方性质的微博都会把网站的最新文章或者动态同步到新浪微博,这样一来就可以让微博用户快速的了解到网站的最新动态,并且也为网站增加了一个曝光以及流量入口,对于更新频繁的网站来说增加一个同步网站动态到微博的功能是非常有必要的,下面直接上代码:
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组件;
如果网站在国外服务器或者服务因特殊原因屏蔽了api.weibo.com域名,则可能造成发布文章卡死或者超时的问题。
如果网站未通过新浪审核微博小尾巴会显示为未审核应用。
(资源库 www.zyku.net)
栏 目:WordPress
下一篇:WordPress测试服务器空间是否支持mail函数
本文标题:wordpress发布文章后自动同步图文到新浪微博的方法
本文地址:https://www.zyku.net/wp/1109.html
您可能感兴趣的文章
- 05-19win10安装directx9的图文安装步骤教程
- 04-08ESXi 6.5安装图文教程
- 08-02Discuz! X3.1 X3.2全新安装图文教程
- 02-23DedeCMS织梦RSS订阅实现图文输出的方法
- 02-20Win7配置IIS服务器详细图文教程
- 02-20腾讯云安装iis的图文教程
- 02-20IIS的安装与配置图文教程
- 02-20Dreamweaver cs6安装详细图文教程
- 02-20使用notepad运行php,python的图文设置方法
- 02-29帝国CMS 7.2版多终端访问功能使用图文教程
- 09-19iqoo8pro怎么开启微云台校准
- 12-06小米mix4怎么设置天气语音播报
- 02-18小米11字体清晰度设置方法
- 10-202021年腾讯云双十一活动优惠汇总
- 02-25真我x7pro至尊版关闭杜比全景声设置方
- 01-24华为手机仅允许已有联系人来电设置方
- 10-11vivox70pro+怎么屏蔽搜索框
- 12-17华为nova5闹钟在哪打开
- 05-09IIS8 通过web.config 实现http跳转到h
- 03-03wordpress指定分类不输出权重集中主站
最近更新
阅读排行
猜你喜欢
- 11-22帝国CMS管理员帐号、密码、认证码及安
- 02-13利用python Pandas实现批量拆分Excel
- 07-05Linux mdu命令
- 03-09opporeno6pro省电技巧设置方法
- 01-11吉林行公交-吉林行公交应用软件功能介
- 02-02oppok7x隐藏app图标方法
- 10-18Windows Server 2008 r2服务器上安装S
- 09-13iqoo8怎样设置锁屏桌面
- 01-11dwg快速看图-dwg快速看图应用软件功能
- 09-27剪映怎么屏蔽个性化广告