网站建设

WordPress百度链接主动提交插件:Baidu-links-submit优化版

Jager · 9月22日 · 2015年 · · 8494次已读

今早就有朋友在张戈博客留言,说百度又推出了主动提交的 WordPress 插件,让我看看。

官方公告如下:

为了方便广大使用 wordpress 建站的站长朋友及时提交数据,百度站长平台设计和开发了一款 wordpress 插件—Baidu Links Submit 工具,该工具是基于百度站长平台 ping2.0 的链接提交接口。本插件只需您简单的配置下您的 site 和 token 即可使用。确保您的网站以快速的提交方式,以保证新链接可以及时被百度收录。

其实很多人以为这个插件就是百度以前推出的 WordPress 结构化数据插件的更新版本,而实际上,在我看完代码后发现其实是针对百度近期推荐的主动提交功能的 WordPress 插件。

Wordpress百度链接主动提交插件:Baidu-links-submit优化版

对于主动提交,其实张戈博客在第一时间就分享了代码版,包括 wp_http、curl_init 和 file_get_contents 三种推送方案,不想用插件的朋友可以继续使用代码版:

WordPress 发布文章主动推送到百度,加快收录保护原创

我亲自安装看了下,发现还能显示当日提交限额、已提交数量和剩余数量:Wordpress百度链接主动提交插件:Baidu-links-submit优化版

这倒是不错,虽然代码版我也能轻松实现,只要借鉴一下插件的查询函数即可,但是代码版就应该保持代码版的简洁高效才好。

但是,在我看完整个插件的关键代码后,发现依然存在以前那个结构化插件的弊病:修改已发布文章或页面会重复推送到百度!一是会拖慢文章更新提交的速度,二是重复提交很有可能会被百度判断为内容不稳定而放入沙盒,造成收录延迟展示的问题!

不过,有了以前的思路,我很简单的就解决了重复推送的问题:文章首次发布时,会推送到百度,如果推送成功则新增一个名称为 baidusubmit 的自定义栏目。回头再来更新修改该文章时,则先判断是否存在这个自定义栏目,如果存在则不再推送到百度。

简单贴一下我修改 2 个关键的地方:

①、推送前先进行自定义栏目的判断:

Wordpress百度链接主动提交插件:Baidu-links-submit优化版

②、成功推送后则新增自定义栏目:

Wordpress百度链接主动提交插件:Baidu-links-submit优化版

这样就保证了每篇文章只会成功推送一次。如果你铁了心想让某篇文章再大改后重新推送到百度,则只需要删除该文章的自定义栏目 baidusubmit 即可:

Wordpress百度链接主动提交插件:Baidu-links-submit优化版

如果还有疑问,建议阅读一下张戈博客以前分享的相关文章:

BaiduSubmit:百度 WordPress 结构化数据插件(改进版)

WordPress 发布文章主动推送到百度,加快收录保护原创

最后,提供优化版的下载地址:

如果你想安装这个插件,那么推荐你使用张戈博客分享的优化版,有益而无害!

安装插件后,记得到插件设置界面填写域名和 token 值【token 值获取地址】。另外,如果之前已经集成了张戈博客的代码版,请记得删除掉,否则首次发布文章会连续推送 2 次!


2015-09-27 更新记录:

首先感谢露兜大神的给力提醒,为了减少垃圾数据的产生,将插件的判断机制改成:

①、文章首次发布时进行推送,如果推送失败则新增自定义栏目 Baidusubmit,值为 false:

//判断推送结果,如果失败则计入自定义栏目 Baidusubmit,值为 false
if (!$error = $http->error()) {
      $ret = self::obj_to_array(json_decode($result, true));
      if (isset($ret['error'])) {
            add_post_meta($post_id, 'Baidusubmit', 'false', true);
      }
}

②、再次编辑更新文章,若检测到存在值为 false 的自定义栏目 Baidusubmit,则再次推送并删除这个自定义栏目。当然, 如果推送失败将继续添加,进入第二轮:

//只有在首次发布文章时才进行推送
$Baidusubmit = get_post_meta($post_id,'Baidusubmit',true);
if ( get_post_status( $post_id ) == 'publish' && $_POST['original_post_status'] != 'publish' ) {
     Baidu_common::post($_url, $post_id);        
//如果存在发布失败的自定义栏目 Baidusubmit,则在编辑文章时再次推送
} else if( $Baidusubmit === 'false' )  {
     delete_post_meta($post_id, 'Baidusubmit');
     Baidu_common::post($_url, $post_id);
}

Ps:这里设置并判断值是否为 false,主要是为了避免重复推送以前 Baidusubmit 值为 1 的文章。

③、另外,插件获取文章地址的写法存在冗余调用:

$_url = get_permalink(get_post($post_id));
已改成:
$_url = get_permalink($post_id);

这个改进,同样感谢露兜的提醒!如果已在正常使用则没必要折腾这个更新,当然如果你是一个强迫症,那就另说了...


2015-09-28 更新记录:

在百度官方贴中发现作者已更新了插件,主要是为了解决插件在低版本下会报致命错误的问题。所以,张戈博客也在发现后第一时间更新了本文分享的优化版插件,使用报错或者首次使用只需从本文下载安装即可。已正常使用的朋友可以无需更新。

72 条回应
  1. 帅气小琦琦 2015-9-22 · 17:09

    已经转载了 谢谢了

  2. 在线工具 2015-9-22 · 20:51

    不错不错

  3. 刘磊博客 2015-9-22 · 21:47

    您好咨询个问题,我刚刚要建站。新手一个。目前贵站是二级域名www.zhang.ge访问自动跳转到一级域名zhang.ge,zhang.ge不变。请问是如何做到的呢!我的访问www.iliulei.com就是www.iliulei.com,iliulei.com就是iliulei.com如何修改呢

    • avatar
      Jager 2015-9-23 · 8:06

      先确认服务器的web软件是什么,当然,如果是虚拟主机一般后台会提供相关设置。这个叫301跳转,百度搜不带www的301到带www就可以找到一堆教程。

  4. 香港云主机 2015-9-23 · 9:53

    我之前也觉得这个插件是百度以前推出的WordPress结构化数据插件的更新版本,看来我理解错了

  5. 主机评测 2015-9-23 · 10:49

    这个插件真的对网站收录有效果吗?

  6. 军校排名 2015-9-23 · 14:09

    谢谢张哥分享,学习了,我也试试用一下。

  7. 微商 2015-9-23 · 15:46

    不知道会不会被收录,百度出的插件应该还不错

  8. 技术拉近你我 2015-9-23 · 16:32

    回去试试看。

  9. 养殖问答 2015-9-23 · 17:26

  10. 小二 2015-9-23 · 19:13

    无法启用插件,因为它引起了一个致命错误(fatal error)。
    Fatal error: require_once() [function.require]: Failed opening required '__DIR__\inc\hooks.class.php' (include_path='.;C:\php5\pear') in D:\cnvbo\wwwroot\pofuli_com\htdocs\wp-content\plugins\baidu-links-submit\baidu-links-submit.php on line 20

  11. jquery中文手册 2015-9-24 · 20:10

    这个插件好,不然被丢进沙盒就悲催啦

  12. 露兜 2015-9-25 · 16:25

    何必用自定义字段来判断是不是新发布的文章?自定义字段纯属浪费存储资源。

    用下面的代码即可:

    if ( get_post_status( $post_id ) == 'publish' && $_POST['original_post_status'] != 'publish' ) {
      $_url = get_permalink(get_post($post_id));
      Baidu_common::post($_url);
    }
    • avatar
      Jager 2015-9-25 · 17:07

      先膜拜一下大神,敬仰已久。
      用自定义栏目其实也是为了让后面想再推送时删除就行。
      而且,如果用大神的方法,如果发布的时候推送失败了,后面就再也不会推送了。
      而自定义栏目,推送失败就不会添加,更新时会继续推送一下。

      • 露兜 2015-9-27 · 10:54

        大神不敢当,相互学习嘛。

        推送失败概率极低,如果一定要确保万无一失的话,这种机制可能更好一些:推送失败才添加自定义栏目。如果推送成功后添加的话,那每篇文章都有一个多余的栏目,仅仅是为了做个标记,手动删除也麻烦。

        判断是否推送用下面的代码:

        $Baidusubmit = get_post_meta( .... );
        if ( get_post_status( $post_id ) == 'publish' && $_POST['original_post_status'] != 'publish' ) {
            首次发布推送
        }
        else if( !empty( $Baidusubmit ) )  {
           之前推送失败则再次推送
        }

        推送成功后自动删除自定义栏目

        • avatar
          Jager 2015-9-27 · 21:24

          感谢回复,已更新到文章中。

  13. 露兜 2015-9-25 · 16:27

    发个评论居然泄露了这么多隐私!!!!
    连所在地都被挖出来了,下次不敢发了。

    • avatar
      Jager 2015-9-25 · 17:07

      :!: 海南三亚好地方,过些天我可能就要来了。

  14. 露兜 2015-9-25 · 16:40

    另外忘了一点,get_permalink函数本身就支持post_id来做参数,百度原版的代码何必再get_post一次呢?这样应该好点:

    $_url = get_permalink( $post_id );
    • avatar
      Jager 2015-9-25 · 17:08

      好,这个回头我更新到代码中,还真没注意到。。。

  15. 科学上网 2015-9-26 · 22:18

    很好 感觉百度有些急于求成

  16. 明月登楼 2015-9-27 · 0:07

    主题自带了推送,所以就把插件都去掉了!

  17. 小二 2015-9-27 · 9:46

    无法启用插件,因为它引起了一个致命错误(fatal error)。 以及解决了
    修改代码baidu-links-submit.php的17行为
    define('BAIDU_APPS_PATH', plugin_dir_path(__FILE__)); 就可以了 是因为php版本太低

    • avatar
      Jager 2015-9-28 · 10:17

      本文已更新

  18. 林忠周 2015-9-29 · 14:23

    博客之前已安装百度数据提交插件《百度sitemap》,安装两个会有影响吗?如果有影响 文中的这个会不会好点?

    • avatar
      Jager 2015-10-15 · 11:23

      建议卸载之前的插件

  19. 聚宝盒 2015-9-30 · 0:56

    这个插件效果和代码版的是不是一样的?效果会更好吗

    • avatar
      Jager 2015-10-15 · 11:23

      代码版正常使用的话,无需安装插件

  20. 张鹏阳 2015-9-30 · 10:53

    好牛逼的技术啊!! :razz:

  21. 茅庐 2015-9-30 · 17:30

    这个插件和百度的sitemap插件有什么区别?冲突吗?安装这个插件是不是要把百度的sitemap插件先卸载了

    • avatar
      Jager 2015-10-15 · 11:22

      如果指的是百度官方推出的那个结构化数据插件,那么建议卸载掉,冲突倒不会,但是会重复推送数据。

  22. 健美体操 2015-10-2 · 10:45

    收纳

  23. 杰创官方博客 2015-10-2 · 20:15

    常来学习学习,吸收些有用的营养,感谢博主的分享。

  24. Alick.Li 2015-10-5 · 11:30

    不错啊 这个... :grin:

  25. Andrew 2015-10-14 · 15:27

    准备用上

  26. 明月登楼 2015-10-16 · 19:38

    唉,我现在是推送了也不收录,好郁闷呀!

  27. MC服主网 2015-10-17 · 21:02

    Jager你好,在使用这种方法提交时我发现一个问题,提交后过几天在站长平台的统计中有时看不到提交链接的数据,但是文章的baidusubmit已经变成1了,这是不是有什么问题?

    • avatar
      Jager 2015-10-18 · 21:53

      文章中代码已更新,如果推送失败才会新增一个自定义栏目,值为false,你可以试试。

  28. 微页站长文摘 2015-10-23 · 22:11

    好东西,收藏了!

  29. 大袋鼠 2015-11-14 · 0:59

    使用了这个插件 发表新文章 后台查看提交次数还是0,查了查插件LOG,
    错误是“2015-11-14 00:36:17 error:Empty reply from server, {"url" …………” 这种错误。。。请问怎么解决。。。

  30. 大袋鼠 2015-11-14 · 2:09

    我说怎么一直提交不了,原来是插件里代码有问题。config.inc.php里url为http://data.zz.baidu.com/,而common.class.php文件里提交网址的方法代码是$api = Baidu_common::$params['url'] . '/urls?site=' ,这样造成的结果就是CURL获取的实际目标地址是 http://data.zz.baidu.com//urls?..... 看见到了吗...多了一个斜杠 所以就一直返回不了数据。。。 改的话将config.inc.php里的url改为 http://data.zz.baidu.com 就好,去掉多余的斜杠。

    • avatar
      Jager 2015-11-14 · 9:33

      这个插件是百度开发的,我倒是没有修改你说到这个代码,双斜杠在大部分主机上应该是没有问题的,比如Linux系统。其他遇到这个问题的朋友可以参考楼主的解决办法。

      • 大袋鼠 2015-11-14 · 13:01

        Centos系统 PHP5.3 APACHE 2.2.15 不知道是不是个例。

      • 大袋鼠 2015-11-14 · 13:46

        前面的方法我提供错了,应该将common.class.php里 '/url?site= 的斜杠去掉。

        • 大分 2015-11-19 · 20:35

          请问,为什么LOG文件提示success:'{"remain":500,"success":0,"not_same_site":
          计数器依然是已提交0?

        • 明月登楼 2016-4-22 · 0:35

          我试试看,我最近这10天一直都是推送失败!

      • 阿布 2015-11-14 · 16:57

        之前一直用的好好的,这两天发现了跟楼主一样的问题,我今天试试看楼主的办法是否可行

  31. 邢台网站建设 2016-1-8 · 11:31

    是在别的站看到这个方法 终于找到原创了,发个留言支持下 另外也送了"地址"

  32. 松露之家 2016-2-5 · 11:44

    现在百度有3个插件,1、结构化 百度sitemap插件 看了评论你说这个可以卸载了 2、WP BaiDu Submit插件 3、baidu links submit插件。第3个就是本文说的,第2个是自动提交链接的那种,后两个插件啥关系啊 都需要安装吗

    • avatar
      Jager 2016-2-5 · 20:52

      选最新的就可以了,不需要重复安装。

      • 松露之家 2016-2-5 · 21:00

        3、baidu links submit插件 好像新一点。 第二个第四版都是8个月以前了

  33. 画情 2016-2-6 · 16:58

    签到成功!签到时间:下午4:40:03,每日签到,生活更精彩哦~
    张哥,你好!
    之前看到你的同步至新浪微博的文章就用,可以同步了,但是再用这个百度推送插件,昨晚试了一下,新浪微博倒是同步,但是好像没推送到百度啊。。是不是有冲突!

    • avatar
      Jager 2016-2-8 · 19:55

      应该不会有冲突

  34. 守得花开见月明 2016-2-28 · 23:58

    wordpress 装在二级目录下 即 http://www.libaijie.com.com/blog的可以使用吗?

  35. 守得花开见月明 2016-3-2 · 23:56

    发了几篇博文都没有提交成功,日记如下

    2016-02-29 21:32:52	error:Empty reply from server, {"url":"http:\/\/data.zz.baidu.com\/\/urls?site=www.libaijie.com&token=j7wQLVqyr3BQLjzJ","content_type":null,"http_code":0,"header_size":0,"request_size":188,"filetime":-1,"ssl_verify_result":0,"redirect_count":0,"total_time":0.131187,"namelookup_time":0.07931,"connect_time":0.095459,"pretransfer_time":0.095461,"size_upload":35,"size_download":0,"speed_download":0,"speed_upload":266,"download_content_length":-1,"upload_content_length":0,"starttransfer_time":0.131176,"redirect_time":0,"redirect_url":"","primary_ip":"111.13.101.139","certinfo":[]}.
    
    2016-03-03 00:01:55	error:Empty reply from server, {"url":"http:\/\/data.zz.baidu.com\/\/urls?site=www.libaijie.com&token=j7wQLVqyr3BQLjzJ","content_type":null,"http_code":0,"header_size":0,"request_size":189,"filetime":-1,"ssl_verify_result":0,"redirect_count":0,"total_time":0.315062,"namelookup_time":0.260994,"connect_time":0.278387,"pretransfer_time":0.278389,"size_upload":36,"size_download":0,"speed_download":0,"speed_upload":114,"download_content_length":-1,"upload_content_length":0,"starttransfer_time":0.315046,"redirect_time":0,"redirect_url":"","primary_ip":"111.13.101.139","certinfo":[]}.
    
  36. 胡歌网摘 2016-6-7 · 22:23

    推送全部失败,日志里面都是这样的信息。。

    2016-06-07 19:04:46     error:Empty reply from server, {"url":"http:\/\/data.zz.baidu.com\/\/urls?site=www.ptent.net&token=xxxxxxxxxxxxxxx","content_type":null,"http_code":0,"header_size":0,"request_size":186,"filetime":-1,"ssl_verify_result":0,"redirect_count":0,"total_time":0.049505,"namelookup_time":1.6e-5,"connect_time":0.004806,"pretransfer_time":0.004807,"size_upload":35,"size_download":0,"speed_download":0,"speed_upload":706,"download_content_length":-1,"upload_content_length":0,"starttransfer_time":0.049491,"redirect_time":0,"certinfo":[],"redirect_url":""}.
  37. xu 2016-11-30 · 18:50

    这个插件貌似有新版本了 :mrgreen:

  38. xu 2016-12-1 · 13:28

    昨天试了下,应该是推送成功了, log里显示success:'{"remain":1,"success":1}',这应该和百度主动推送升级有关系吧(http://zhanzhang.baidu.com/wiki/872)今天在百度站长那看了昨天有推送信息。唯一的问题是插件后台推送统计那一直没变化已提交一直显示0,不知道是不是因为百度推送升级关系。

  39. 阅读生活 2017-7-8 · 12:52

    今天看到百度站长推送的文章说一个Baidu Submit URLs的插件提交不存在的链接,感觉换了博主这个,希望不要出问题啊……

  40. 搜罗网 2017-7-22 · 18:52

    六六六啊

  41. 张甲 2017-9-7 · 11:12

    你好,请问用了这个插件后,还有必要
    在“更新服务”中增加百度的Ping地址吗?
    增加的话,修改文章的时候,会不会重复提交呢

    • avatar
      Jager 2017-9-11 · 13:50

      没什么问题,用吧。

  42. 沈唁志 2017-10-22 · 11:29

    表哥 这个还能用吗 感觉写了文章以后没有推送0 0

  43. 张甲博客 2017-10-31 · 8:28

    您好,为什么最近插件显示推送成功,日志也没问题,但是百度站长工具里一直显示主动推送0呢?

    • 张甲博客 2017-11-2 · 10:48

      经过这几天的测试,发现是百度站长工具统计中,总是少一个,比如当天发了三篇文章,后台插件处也显示提交了三个,日志也显示成功三个,但是第二天百度站长工具链接提交那里只会显示2个

  44. 小伙 2018-3-28 · 21:01

    定时发表的文章不会推送,就没人发现这个问题么?

  45. 眼观世界 2018-12-29 · 19:01

    老哥,请问一下,这插件兼容wordpress5.02 吗? 具体内容是:再发布新文章后,回头查看插件内已提交和剩余数额不变。

    • avatar
      Jager 2019-1-1 · 16:39

      这个要具体测试下才知道,很久没搭理过了。

  46. 土蜂蜜网 2019-2-20 · 13:56

    来学习下相关知识,真不错。

  47. 桃子皮 2019-8-6 · 21:52

    这么长时间了还能用吗这个插件