Three主题添加百度实时推送功能

 懿古今   2015-09-26 08:00:45 更新  技术文档

最近在很多博客上都看到有关于WordPress集成百度实时推送的功能,虽然不知道具体效果如何,但是我想增加这个功能应该总不会是坏事吧,所以就给自己的站点添加试试,以便下次更新Three主题的时候集成进去。

具体操作步骤如下:

1、获取token

我们只需要登录百度站长平台》网页抓取》点击【链接提交】,在右边的页面中的“链接提交”中选择需要添加百度实时推送功能的站点,然后就可以看到这个站点的token值了。

Three主题添加百度实时推送功能

PS:一个百度站长账号有多个站点,这几个站点的token值都是一样的。

2、修改代码,添加百度实时推送功能

把以下代码中的token值(xxxxxxxxxxx)改为我们第一步获取的token值(其他的不用修改),然后把这些代码添加到主题目录下的 functions.php 文件最后一个?>之前即可。

  1. /**
  2. * WordPress发布文章主动推送到百度,加快收录保护原创【WordPress通用方式】
  3. * 文章地址:http://zhang.ge/5041.html
  4. */
  5. if(!function_exists('Baidu_Submit')){
  6.     function Baidu_Submit($post_ID) {
  7.         $WEB_TOKEN  = 'xxxxxxxxxxx';  //这里请换成你的网站的百度主动推送的token值
  8.         $WEB_DOMAIN = get_option('home');
  9.         //已成功推送的文章不再推送
  10.         if(get_post_meta($post_ID,'Baidusubmit',true) == 1) return;
  11.         $url = get_permalink($post_ID);
  12.         $api = 'http://data.zz.baidu.com/urls?site='.$WEB_DOMAIN.'&token='.$WEB_TOKEN;
  13.         $request = new WP_Http;
  14.         $result = $request->request( $api , array( 'method' => 'POST', 'body' => $url , 'headers' => 'Content-Type: text/plain') );
  15.         $result = json_decode($result['body'],true);
  16.         //如果推送成功则在文章新增自定义栏目Baidusubmit,值为1
  17.         if (array_key_exists('success',$result)) {
  18.             add_post_meta($post_ID, 'Baidusubmit', 1, true);
  19.         }
  20.     }
  21.     add_action('publish_post', 'Baidu_Submit', 0);
  22. }

现在我们发布新文章,文章地址就会被主动推送到百度。被成功推送的文章,将自动出现如下自定义栏目:

Three主题添加百度实时推送功能1

为避免代码重复推送的尴尬,如果你需要更新文章再次推送数据,那么在保存/更新文章之前,删除或修改这个自定义栏目即可再次被推送。

Ps:虽然,主动推送的各种方法都支持一次推送多条数据,从我个人的经验来看,对于老文章没必要再次推送,频繁推送容易导致百度“翻脸”!

特别说明:

如果按以上步骤正确操作后,在发布新文章时自定义栏目中不会出现我们期望的baidusubmit,说明实时推送给百度不成功,说明所使用的主机的 curl_exec()函数被禁用了。这个时候,我们只需要把以下代码替换掉第二步的代码即可。

  1. /**
  2. * WordPress发布文章主动推送到百度,加快收录保护原创【file_get_contents方式】
  3. * 文章地址:http://zhang.ge/5041.html
  4. */
  5. if(!function_exists('Baidu_Submit')) {
  6.     function Baidu_Submit($post_ID) {
  7.         $WEB_TOKEN='xxxxxxxxx';  //这里换成你的网站的百度主动推送的token值
  8.         $WEB_DOMAIN=get_option('home');
  9.         //已成功推送的文章不再推送
  10.         if(get_post_meta($post_ID,'Baidusubmit',true) == 1) return;
  11.         $url = get_permalink($post_ID);
  12.         $api = 'http://data.zz.baidu.com/urls?site='.$WEB_DOMAIN.'&token='.$WEB_TOKEN;
  13.         $data = array (
  14.             'http' => array (
  15.                 'method' => 'POST',
  16.                 'header'=> "Content-Type: text/plain",
  17.                 "Content-Length: ".strlen($url)."rn",
  18.                 'content' => $url
  19.             )
  20.         );
  21.         $data = stream_context_create($data);
  22.         $result = file_get_contents($api, false, $data);
  23.         $result = json_decode($result,true);
  24.         //如果推送成功则在文章新增自定义栏目Baidusubmit,值为1
  25.         if (array_key_exists('success',$result)) {
  26.             add_post_meta($post_ID, 'Baidusubmit', 1, true);
  27.         }
  28.     }
  29.     add_action('publish_post', 'Baidu_Submit', 0);
  30. }

文中涉及的技术和代码均来自于张戈博主分享的《WordPress发布文章主动推送到百度,加快收录保护原创》。

本文地址:https://www.yigujin.cn/428.html

你可能感兴趣的文章

文章标签: ,   ,  
版权声明:本文为原创文章,版权归 懿古今 所有,欢迎分享本文,转载请保留出处!发布此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请发邮件至[email protected],确认后马上更正、删除,谢谢!

发表评论

  1. 微童年
    微童年 @回复

    之前确实是挺好,我是每天都手动提交,如果有自动也省不少事

    • 懿古今
      懿古今2015-08-25 09:56  回复

      @微童年手动提交很难坚持,还是设置自动实时推送比较好

  2. 小幻
    小幻 @回复

    每天自动提交480条url的路过。。。

    • 懿古今
      懿古今2015-08-25 09:57  回复

      @小幻[疑问] 有那么多条啊?不会重复推送吧?

  3. Zou
    Zou's Blog @回复

    各种优化啊.

  4. 夜
     @回复

    直接集成在主题里····

    • 懿古今
      懿古今2015-08-25 17:46  回复

      @夜是的,我现在也是,等Three主题下次更新我也集成进去

  5. 天中青年
    天中青年 @回复

    很烦百度,感觉它太嚣张跋扈了,不理他就是。爱收不收。

    • 懿古今
      懿古今2015-08-25 17:46  回复

      @天中青年在国内搞博客网站怎么都绕不开百度,没办法,行情如此

  6. wys.me
    wys.me @回复

    只做自己。

    • 懿古今
      懿古今2015-08-25 22:56  回复

      @wys.me[呲牙] 做自己之余能够兼顾就兼顾一下百度,顺便折腾折腾

  7. 吃过没|chiguomei.cn
    吃过没|chiguomei.cn @回复

    试试看效果怎么样

  8. 守心斋
    守心斋 @回复

    一直没加,百度爱咋咋地。不过支持博主分享

    • 懿古今
      懿古今2015-08-25 22:57  回复

      @守心斋[强] 我以前也没加,不过看到了就忍不住折腾一下

  9. 清风
    清风 @回复

    这个功能不错,大力支持。正给一个朋友建博客,用的就是这个主题,先谢了

    • 懿古今
      懿古今2015-08-28 10:17  回复

      @清风[呲牙] 不用客气,对大家有用就好

  10. 80后记忆
    80后记忆 @回复

    这个对于新站很有帮助啊!

    • 懿古今
      懿古今2017-12-29 19:10  回复

      @80后记忆现在这个已经落伍了,现在都是直接推送到熊掌号的

      • 429233441
        4292334412019-05-29 17:49  回复

        @懿古今我用Nana主题勾选了百度实时推送,token值没问题,但在百度提交链接那里显示主动推送的次数每天都是0。Nana主题也需要在function.php文件里加上上面的代码吗?

        • 懿古今
          懿古今2019-06-05 11:29  回复

          @429233441现在百度的实时推送应该都变成了移动专区的天级收录API接口了。

  11. 男人不可以穷
    男人不可以穷 @回复

    没有baidusubmit栏目 只出现 views 栏目 值为1 [疑问]