WordPress如何将网站文章自动同步到新浪微博

2017年5月11日23:43:08 2 418 views

WordPress如何将网站文章自动同步到新浪微博?相信大家对这个需求还是需要的。自动同步对博客的宣传还是有一定的好处的,朱曙明博客便在这里分享下WordPress自动同步到新浪的方法。

一、同步新浪微博代码

代码是来自张戈博客的,这里只是来分享下,将以下代码放入functions.php中,代码如下:

  1. /**
  2. * WordPress发布文章同步到新浪微博
  3. */
  4. function post_to_sina_weibo($post_ID) {
  5.    /* 鉴于很多朋友反馈发布文章空白,临时加上调试代码,若无问题可删除此行,若有问题请将错误信息在本文留言即可 */
  6.    ini_set('display_errors', true);
  7.    /* 此处修改为通过文章自定义栏目来判断是否同步 */
  8.    if(get_post_meta($post_ID,'weibo_sync',true) == 1) return;
  9.    $get_post_info = get_post($post_ID);
  10.    $get_post_centent = get_post($post_ID)->post_content;
  11.    $get_post_title = get_post($post_ID)->post_title;
  12.    if ($get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish') {
  13.      $appkey='4071385439';  /* 此处是你的新浪微博appkey,不修改的话就会显示来自朱曙明博客哦! */
  14.      $username='微博用户名';
  15.      $userpassword='微博密码';
  16.      $request = new WP_Http;
  17.      /* 获取文章标签关键词 */
  18.      $keywords = "";
  19.      $tags = wp_get_post_tags($post_ID);
  20.      foreach ($tags as $tag ) {
  21.         $keywords = $keywords.'#'.$tag->name."#";
  22.      }
  23.      /* 修改了下风格,并添加文章关键词作为微博话题,提高与其他相关微博的关联率 */
  24.      $string1 = '【文章发布】' . strip_tags$get_post_title ).':';
  25.      $string2 = $keywords.' 查看全文:'.get_permalink($post_ID);
  26.      /* 微博字数控制,避免超标同步失败 */
  27.      $wb_num = (138 - WeiboLength($string1.$string2))*2;
  28.      $status = $string1.mb_strimwidth(strip_tags( apply_filters('the_content', $get_post_centent)),0, $wb_num,'...').$string2;
  29.      $api_url = 'https://api.weibo.com/2/statuses/update.json';
  30.      $body = array('status' => $status,'source' => $appkey);
  31.      $headers = array('Authorization' => 'Basic ' . base64_encode("$username:$userpassword"));
  32.      $result = $request->post($api_urlarray('body' => $body,'headers' => $headers));
  33.      /* 若同步成功,则给新增自定义栏目weibo_sync,避免以后更新文章重复同步 */
  34.      add_post_meta($post_ID, 'weibo_sync', 1, true);
  35.    }
  36. }
  37. add_action('publish_post', 'post_to_sina_weibo', 0);
  38. /*
  39. //获取微博字符长度函数 
  40. */
  41. function WeiboLength($str)
  42. {
  43.     $arr = arr_split_zh($str);   //先将字符串分割到数组中
  44.     foreach ($arr as $v){
  45.         $temp = ord($v);        //转换为ASCII码
  46.         if ($temp > 0 && $temp < 127) {
  47.             $len = $len+0.5;
  48.         }else{
  49.             $len ++;
  50.         }
  51.     }
  52.     return ceil($len);        //加一取整
  53. }
  54. /*
  55. //拆分字符串函数,只支持 gb2312编码  
  56. //参考:http://u-czh.iteye.com/blog/1565858
  57. */
  58. function arr_split_zh($tempaddtext){
  59.     $tempaddtext = iconv("UTF-8""GBK//IGNORE"$tempaddtext);
  60.     $cind = 0;
  61.     $arr_cont=array();
  62.     for($i=0;$i<strlen($tempaddtext);$i++)
  63.     {
  64.         if(strlen(substr($tempaddtext,$cind,1)) > 0){
  65.             if(ord(substr($tempaddtext,$cind,1)) < 0xA1 ){ //如果为英文则取1个字节
  66.                 array_push($arr_cont,substr($tempaddtext,$cind,1));
  67.                 $cind++;
  68.             }else{
  69.                 array_push($arr_cont,substr($tempaddtext,$cind,2));
  70.                 $cind+=2;
  71.             }
  72.         }
  73.     }
  74.     foreach ($arr_cont as &$row)
  75.     {
  76.         $row=iconv("gb2312","UTF-8",$row);
  77.     }
  78.     return $arr_cont;
  79. }

二、申请同步新浪微博权限

代码插入好了,但是这还不算完,没有权限一切都是空。

首先需要申请新浪App key。地址:http://open.weibo.com/webmaster/add

如下图,在新浪接入网站,审核时间在1个工作日左右。

WordPress如何将网站文章自动同步到新浪微博

WordPress如何将网站文章自动同步到新浪微博

WordPress如何将网站文章自动同步到新浪微博

获取了App key之后,在代码里面填写App key和账号密码就可以了。

这样就大功告成了。

weinxin
博客之家
博客之家,欢迎各位来加入,一起来交流!本站资源全部上传在群里,有需要的也可以加群来免费下载。
如果本站内容对你有所帮助,请帮忙点击下页面上的广告,帮助下网站发展,谢谢大家!
朱曙明

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: :aa:

目前评论:2   其中:访客  1   博主  1

    • avatar 曹嘉鑫 1

      张戈博客的原文说要申请“微博高级写入接口”,但现在找不到了,同步不了!您的还能用吗,还是有什么我不知道的操作?

        • avatar 朱曙明 Admin

          @曹嘉鑫 因为高级写入需要下线了。所以本文并没有写到需要接入高级写入。前段时间我的还在使用这个同步。目前没有设置同步了