WordPress 运用新浪微博引流方法

2017-02-2415:24:23 28 6,058
摘要

至此,关于WordPress结合新浪微博引流方法就这些了,当然也会有别的方法,只是目前明月使用这两个方法感觉效果还不错,如果你的微博粉丝众多,效果会更加明显的。当然也可能效果并不出众,这些跟微博账号的影响力和人脉也是有一定关系的。随着时间的推进效果是持续的,当你在“百度统计”里看到有weibo.com外链访问这就是效果,凡事儿都是“贵在坚持”了,博客坚持下去,微博也就坚持下去了,不要忘了,博客+微博是同步关系,呵呵!

说起“微博”来,大家首先想到的就是“新浪微博”了,当年微博还很火爆的时候明月也是狠玩了一番微博方面的东西,特别是 WordPress 接入微博的当时我手里所有的博客网站都接入了,可惜随着微博热度的降低,已经有好几年没有关注过了,甚至平时都很少登录微博了。

还是在前几天无意中看到【张戈博客』里一篇 2015 年的文章【WordPress 发布文章自动同步到新浪微博(带特色图片)』竟然 2016 年又更新了,这时我才想起来我的微博都好久没有看过了。看完此文后才意识到微博其实也是可以“引流”的,抱着“苍蝇腿也是肉”的态度认真的研究了一下此文,感觉可操作性很强,实现也不难,于是我就又重新开始登陆微博启用我的微博了。

WordPress 运用新浪微博引流方法

因为要用到微博开发平台的 AppKey,我的微博开发平台账号因为太旧没有使用了,里面的“网站接入 应用”信息老旧只能重新申请审核,在等待期间我就又琢磨和回忆了一下以前 WordPress 下微博接入的方法,最常见、目前也是可以用到的就是“百度分享”里利用微博 AppKey 接入微博的方法:

这个方法其实很简单就是在用“百度分享”里的分享到新浪微博的时候实现分享到微博里的内容展示带上 AppKey 关联的网站名称,如下图:

WordPress 运用新浪微博引流方法

上图是我们在浏览博客时通过“百度分享”分享到微博时显示的来源(红色方框)

WordPress 运用新浪微博引流方法

上图是在“百度分享”里集成了自己的微博 AppKey 以后显示的来源(红色方框)

我记得以前微博的这个“来源”显示还是一个很不错的“外链”,后来好像统一使用了新浪的短链接就没有“外链”效果了,目前这样的显示,无非是提升“逼格”而已,呵呵,至于对 SEO 的效果,真心不知道。

百度分享集成新浪微博 AppKey 让“来自”处显示网站名称

首先,你要登陆“新浪微博开放平台”(open.weibo.com)登陆你使用的微博账号后,提交实名认证并获得通过,然后在“微连接”选择“网站接入”接入并创建“网站应用”,照着提示提交后等待审核通过即可。

WordPress 运用新浪微博引流方法

整个下来估计需要三天左右的时间可以审核通过,然后就可以在“我的应用”里面看到你提交的网站接入应用了,进入接入应用控制面板即可看到你 AppKey 了。

获得了 AppKey 后,只需要添加到目前 WordPress 博客主题集成的“百度分享”代码里即可,下面以鸟哥 Begin 主题集成为例:

打开主题根目录下/footer.php 文件,大约在 25 行找到如下代码:

  1. <script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"1","bdSize":"16"},"share":{"bdSize":16}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>

在 bdSnsKey":{}这里就是填写自己 AppKey 的地方,添加新浪微博 AppSkey 后代码如下:

  1. <script>window._bd_share_config={"common":{"bdSnsKey":{'tsina':'你自己的新浪微博 AppKey'},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"1","bdSize":"16"},"share":{"bdSize":16}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>

其实就是在 bdSnsKey":{}里添加'tsina':'你自己的新浪微博 AppKey'这样一段就可以了(用 AppKey 替换 红色部分内容)。然后保存 footer.php 并上传覆盖即可。

这时你任意找到一篇你的博客文章通过百度分享分享到新浪微博试试看是不是“来自”显示的已经是你博客网站的站名了(这里显示的站名其实就是你在申请网站接入时候提交的网站名称。)

上面这个仅仅是达到的效果是通过网站自己的分享到新浪微博的显示“来源”为网站名称,这有点儿被动,用户不分享的话,基本上也就没有啥效果的。当然博客博主自己也可以手动来分享到微博的,下面结合张戈博客分享的代码来实现 WordPress 发布文章后自动同步到新浪微博去,并且支持缩略图、关键词自动提取。

WordPress 运用新浪微博引流方法

WordPress 发布文章后自动同步到新浪微博

这个方法其实是很实用,也是很傻瓜的一个方法,一次部署好代码后以后几乎不用管理,每次有文章更新的时候自动同步到新浪微博,原文大家可以参考【WordPress 发布文章自动同步到新浪微博(带特色图片)』原文来详细了解,明月今天就是给出自己折腾的时候的经验。

为了保证代码部署后的成功率,明月建议在部署正式代码前先用张戈博客提供的调试代码来调试确认成功了再部署,具体方法是,将下面的代码通过文本编辑器以 UTF-8 保存为一个任意名字的 PHP 文件,如:weibo.php 上传到网站根目录。

DeBUG 代码如下:展开

  1. <?php
  2. /**
  3. * WordPress 发布文章同步到新浪微博(DeBUG 测试)
  4. * 文章地址:https://zhangge.net/5082.html
  5. */
  6. ini_set('display_errors', true);
  7. require('./wp-blog-header.php');
  8. header("Content-type: text/html;charset=UTF-8");
  9. header('HTTP/1.1 200 OK');
  10. function post_to_sina_weibo_test($post_ID) {
  11.    $get_post_info = get_post($post_ID);
  12.    $get_post_centent = get_post($post_ID)->post_content;
  13.    $get_post_title = get_post($post_ID)->post_title;
  14.    if ($get_post_info->post_status == 'publish') {
  15.        $appkey='1034947262'; /* 此处是你的新浪微博 appkey,不修改的话就会显示来自张戈博客哦! */
  16.        $username='微博用户名';
  17.        $userpassword='微博密码';
  18.        $request = new WP_Http;
  19.        $keywords = "";
  20.        /* 获取文章标签关键词 */
  21.        $tags = wp_get_post_tags($post_ID);
  22.        foreach ($tags as $tag ) {
  23.           $keywords = $keywords.'#'.$tag->name."#";
  24.        }
  25.       /* 修改了下风格,并添加文章关键词作为微博话题,提高与其他相关微博的关联率 */
  26.      $string1 = '【文章发布』' . strip_tags$get_post_title ).':';
  27.      $string2 = $keywords.' 查看全文:'.get_permalink($post_ID);
  28.      /* 微博字数控制,避免超标同步失败 */
  29.      $wb_num = (138 - WeiboLength_test($string1.$string2))*2;
  30.      $status = $string1.mb_strimwidth(strip_tags( apply_filters('the_content', $get_post_centent)),0, $wb_num,'...').$string2;
  31.        /* 获取特色图片,如果没设置就抓取文章第一张图片 */
  32.        $url = get_mypost_thumbnail($post_ID);
  33.        /* 判断是否存在图片,定义不同的接口 */
  34.        if(!emptyempty($url)){
  35.           $api_url = 'https://api.weibo.com/2/statuses/upload_url_text.json'; /* 新的 API 接口地址 */
  36.           $body = array('status' => $status,'source' => $appkey,'url' => $url);
  37.        } else {
  38.           $api_url = 'https://api.weibo.com/2/statuses/update.json';
  39.           $body = array('status' => $status,'source' => $appkey);
  40.        }
  41.        $headers = array('Authorization' => 'Basic ' . base64_encode("$username:$userpassword"));
  42.        $result = $request->post($api_urlarray('body' => $body,'headers' => $headers));
  43.        return json_encode($result);
  44.     }
  45. }
  46. /*
  47. //获取微博字符长度函数 
  48. */
  49. function WeiboLength_test($str)
  50. {
  51.     $arr = arr_split_zh_test($str);   //先将字符串分割到数组中
  52.     foreach ($arr as $v){
  53.         $temp = ord($v);        //转换为 ASCII 码
  54.         if ($temp > 0 && $temp < 127) {
  55.             $len = $len+0.5;
  56.         }else{
  57.             $len ++;
  58.         }
  59.     }
  60.     return ceil($len);        //加一取整
  61. }
  62. /*
  63. //拆分字符串函数,只支持 gb2312 编码  
  64. //参考:http://u-czh.iteye.com/blog/1565858
  65. */
  66. function arr_split_zh_test($tempaddtext){
  67.     $tempaddtext = iconv("UTF-8""GBK//IGNORE"$tempaddtext);
  68.     $cind = 0;
  69.     $arr_cont=array();
  70.     for($i=0;$i<strlen($tempaddtext);$i++)
  71.     {
  72.         if(strlen(substr($tempaddtext,$cind,1)) > 0){
  73.             if(ord(substr($tempaddtext,$cind,1)) < 0xA1 ){ //如果为英文则取 1 个字节
  74.                 array_push($arr_cont,substr($tempaddtext,$cind,1));
  75.                 $cind++;
  76.             }else{
  77.                 array_push($arr_cont,substr($tempaddtext,$cind,2));
  78.                 $cind+=2;
  79.             }
  80.         }
  81.     }
  82.     foreach ($arr_cont as &$row)
  83.     {
  84.         $row=iconv("gb2312","UTF-8",$row);
  85.     }
  86.     return $arr_cont;
  87. }
  88. /**
  89. * WordPress 获取文章图片加强版 By 张戈博客
  90. */
  91. if(!function_exists('get_mypost_thumbnail')){
  92.   function get_mypost_thumbnail($post_ID){
  93.      if (has_post_thumbnail()) {
  94.             $timthumb_src = wp_get_attachment_image_src( get_post_thumbnail_id($post_ID), 'full' );
  95.             $url = $timthumb_src[0];
  96.     } else {
  97.         if(!$post_content){
  98.             $post = get_post($post_ID);
  99.             $post_content = $post->post_content;
  100.         }
  101.         preg_match_all('|<img.*?src=[\'"](.*?)[\'"].*?>|i', do_shortcode($post_content), $matches);
  102.         if$matches && isset($matches[1]) && isset($matches[1][0]) ){
  103.             $url =  $matches[1][0];
  104.         }else{
  105.             $url =  '';
  106.         }
  107.     }
  108.     return $url;
  109.   }
  110. }
  111. echo post_to_sina_weibo_test(5082); //此处数字改成博客已发布文章的 ID 即可

记得要修改上述代码里的微博相关参数为自己的哦,最后一行的数字改为自己用于测试的文章 ID 即可,为了不重复的在微博里发布,可以每调试一次更换一下这个数字。

当调试成功后,确认在微博里可以正常显示了都达到目的了,在将下面的正式代码部署到主题 function.php 里(Begin 主题的 function.php 是在“主题更目录/inc/”里的)。

正式代码如下:展开

  1. /**
  2. * WordPress 发布文章同步到新浪微博(带图片&自定义栏目版)
  3. * 文章地址:http://zhangge.net/4947.html
  4. * 最后更新:2016 年 12 月 18 日
  5. */
  6. function post_to_sina_weibo($post_ID) {
  7.    /* 鉴于很多朋友反馈发布文章空白,临时加上调试代码,若无问题可删除此行,若有问题请将错误信息在本文留言即可 */
  8.    ini_set('display_errors', true);
  9.    /* 此处修改为通过文章自定义栏目来判断是否同步 */
  10.    if(get_post_meta($post_ID,'weibo_sync',true) == 1) return;
  11.    $get_post_info = get_post($post_ID);
  12.    $get_post_centent = get_post($post_ID)->post_content;
  13.    $get_post_title = get_post($post_ID)->post_title;
  14.    if ($get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish') {
  15.        $appkey='1034947262'; /* 此处是你的新浪微博 appkey,不修改的话就会显示来自张戈博客哦! */
  16.        $username='微博用户名';
  17.        $userpassword='微博密码';
  18.        $request = new WP_Http;
  19.        $keywords = "";
  20.        /* 获取文章标签关键词 */
  21.        $tags = wp_get_post_tags($post_ID);
  22.        foreach ($tags as $tag ) {
  23.           $keywords = $keywords.'#'.$tag->name."#";
  24.        }
  25.       /* 修改了下风格,并添加文章关键词作为微博话题,提高与其他相关微博的关联率 */
  26.      $string1 = '【文章发布』' . strip_tags$get_post_title ).':';
  27.      $string2 = $keywords.' 查看全文:'.get_permalink($post_ID);
  28.      /* 微博字数控制,避免超标同步失败 */
  29.       $wb_num = (138 - WeiboLength($string1.$string2))*2;
  30.       $status = $string1.mb_strimwidth(strip_tags( apply_filters('the_content', $get_post_centent)),0, $wb_num,'...').$string2;
  31.        /* 获取特色图片,如果没设置就抓取文章第一张图片 */
  32.        $url = get_mypost_thumbnail($post_ID);
  33.        /* 判断是否存在图片,定义不同的接口 */
  34.        if(!emptyempty($url)){
  35.            $api_url = 'https://api.weibo.com/2/statuses/upload_url_text.json'; /* 新的 API 接口地址 */
  36.            $body = array('status' => $status,'source' => $appkey,'url' => $url);
  37.        } else {
  38.            $api_url = 'https://api.weibo.com/2/statuses/update.json';
  39.            $body = array('status' => $status,'source' => $appkey);
  40.        }
  41.        $headers = array('Authorization' => 'Basic ' . base64_encode("$username:$userpassword"));
  42.        $results = $request->post($api_urlarray('body' => $body,'headers' => $headers));
  43.        $result  = $results['body'];
  44.         if(!strstr($result ,'error_code')) {
  45.             // 若成功,则给新增自定义栏目 weibo_sync,避免以后更新文章重复同步
  46.             add_post_meta($post_ID, 'weibo_sync', 1, true);
  47.         } else {
  48.             // 若失败,则记录错误日志
  49.             logInfo($result);
  50.         }
  51.        add_post_meta($post_ID, 'weibo_sync', 1, true);
  52.     }
  53. }
  54. add_action('publish_post', 'post_to_sina_weibo', 0);
  55. /*
  56. //获取微博字符长度函数 
  57. */
  58. function WeiboLength($str)
  59. {
  60.     $arr = arr_split_zh($str);   //先将字符串分割到数组中
  61.     foreach ($arr as $v){
  62.         $temp = ord($v);        //转换为 ASCII 码
  63.         if ($temp > 0 && $temp < 127) {
  64.             $len = $len+0.5;
  65.         }else{
  66.             $len ++;
  67.         }
  68.     }
  69.     return ceil($len);        //加一取整
  70. }
  71. /*
  72. //拆分字符串函数,只支持 gb2312 编码  
  73. //参考:http://u-czh.iteye.com/blog/1565858
  74. */
  75. function arr_split_zh($tempaddtext){
  76.     $tempaddtext = iconv("UTF-8""GBK//IGNORE"$tempaddtext);
  77.     $cind = 0;
  78.     $arr_cont=array();
  79.     for($i=0;$i<strlen($tempaddtext);$i++)
  80.     {
  81.         if(strlen(substr($tempaddtext,$cind,1)) > 0){
  82.             if(ord(substr($tempaddtext,$cind,1)) < 0xA1 ){ //如果为英文则取 1 个字节
  83.                 array_push($arr_cont,substr($tempaddtext,$cind,1));
  84.                 $cind++;
  85.             }else{
  86.                 array_push($arr_cont,substr($tempaddtext,$cind,2));
  87.                 $cind+=2;
  88.             }
  89.         }
  90.     }
  91.     foreach ($arr_cont as &$row)
  92.     {
  93.         $row=iconv("gb2312","UTF-8",$row);
  94.     }
  95.     return $arr_cont;
  96. }
  97. /**
  98. * WordPress 获取文章图片加强版 By 张戈博客
  99. */
  100. if(!function_exists('get_mypost_thumbnail')){
  101.   function get_mypost_thumbnail($post_ID){
  102.      if (has_post_thumbnail()) {
  103.             $timthumb_src = wp_get_attachment_image_src( get_post_thumbnail_id($post_ID), 'full' );
  104.             $url = $timthumb_src[0];
  105.     } else {
  106.         if(!$post_content){
  107.             $post = get_post($post_ID);
  108.             $post_content = $post->post_content;
  109.         }
  110.         preg_match_all('|<img.*?src=[\'"](.*?)[\'"].*?>|i', do_shortcode($post_content), $matches);
  111.         if$matches && isset($matches[1]) && isset($matches[1][0]) ){
  112.             $url =  $matches[1][0];
  113.         }else{
  114.             $url =  '';
  115.         }
  116.     }
  117.     return $url;
  118.   }
  119. }
  120. //写日志函数
  121. function logInfo($msg)
  122. {
  123.     $logSwitch  = 1;                     // 日志开关:1 表示打开,0 表示关闭
  124.     $logFile    = '/tmp/sync_weibo.log'; // 日志路径           
  125.     if ($logSwitch == 0 ) return;
  126.     date_default_timezone_set('Asia/Shanghai');
  127.     file_put_contents($logFiledate('[Y-m-d H:i:s]: ') . $msg . PHP_EOL, FILE_APPEND);
  128.     return $msg;
  129. }

同样的记得要把上述代码里微博相关参数替换成自己的哦!明月在测试的时候发现总是因为字数超过 140 个限制失败,当你也遇到这个问题的时候可以修改减小上述代码第 71 行处的数字“127”,来修正,我目前使用的是数字“100”。

总结

至此,关于 WordPress 结合新浪微博引流方法就这些了,当然也会有别的方法,只是目前明月使用这两个方法感觉效果还不错,如果你的微博粉丝众多,效果会更加明显的。当然也可能效果并不出众,这些跟微博账号的影响力和人脉也是有一定关系的。随着时间的推进效果是持续的,当你在“百度统计”里看到有 weibo.com 外链访问这就是效果,凡事儿都是“贵在坚持”了,博客坚持下去,微博也就坚持下去了,不要忘了,博客+微博是同步关系,呵呵!

注:文中主要代码引用自【张戈博客』,特此感谢!

历史文章推荐:

  • 本博客公众号
  • 扫一扫关注!
  • weinxin
  • 本博客小程序
  • 微信内浏览本博客
  • weinxin

发表评论

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

目前评论:28   其中:访客  14   博主  14

    • 成航先森 成航先森 3

      微博开放平台6月26号的微博接口升级公告中指出,以下我们要用到的两个接口都需要升级,本月我的已经不能同步了。据说得用SDK了,但张戈大神只是说找时间弄,但目前还没弄。
      statuses/update 发布一条微博
      statuses/upload_url_text 发布一条微博同时指定上传的图片

      • 四叶草 四叶草 0

        “该身份证件号码已经被注册使用,不能再次作为证件信息进行身份认证”我已经忘记了认证过的微博账号了!。。。

        • 杭州SEO优化 杭州SEO优化 4

          博主 新浪权重高,如果设置成这样,网站更新文章第一时间转发到微博会不会快速收录新浪而迟迟不收录咱们的网站呢

            • 明月登楼 明月登楼 Admin

              @杭州SEO优化 会,并且还会很严重!这个问题!但是随着你域名的权重提升,新浪的这些外链就是你的助力了!短期看有点儿得不偿失,但长期看很有必要的!