推广 热搜: 后台  帝国cms  DESTOON  位置  网站  帝国cms建站  Wordpress教程  MAC系统  内容  destoon模板 

wordpress发布文章后自动同步图文到新浪微博的方法

   日期:2019-06-12     浏览:160    违规举报
 

经常上新浪微博并且关注了不少官网认证号的小伙伴一定会发现很多官方性质的微博都会把网站的最新文章或者动态同步到新浪微博,这样一来就可以让微博用户快速的了解到网站的最新动态,并且也为网站增加了一个曝光以及流量入口,对于更新频繁的网站来说增加一个同步网站动态到微博的功能是非常有必要的,下面直接上代码:

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域名,则可能造成发布文章卡死或者超时的问题。

如果网站未通过新浪审核微博小尾巴会显示为未审核应用。

免责声明:
1、本站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
2、本站部分作品内容是由网友自主投稿和发布、编辑整理上传,对此类内容本站仅提供交流平台,不为其版权负责,更不为其观点承担任何责任。
3、因行业及专业性有限,故未能核验会员发布内容的真实性及有效性,不为其负责,如有虚假或违规内容敬请准备材料图片发邮件到info@n360.cn举报,本站核实后积极配合删除。
4、如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时处理或删除。
 
打赏
 
更多>同类网站技术
0相关评论

推荐图文
推荐网站技术
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  免责声明  |  版权隐私  |  信息发布规则  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2020081222号
Powered By DESTOON