今早就有朋友在张戈博客留言,说百度又推出了主动提交的 WordPress 插件,让我看看。
官方公告如下:
为了方便广大使用 wordpress 建站的站长朋友及时提交数据,百度站长平台设计和开发了一款 wordpress 插件—Baidu Links Submit 工具,该工具是基于百度站长平台 ping2.0 的链接提交接口。本插件只需您简单的配置下您的 site 和 token 即可使用。确保您的网站以快速的提交方式,以保证新链接可以及时被百度收录。
其实很多人以为这个插件就是百度以前推出的 WordPress 结构化数据插件的更新版本,而实际上,在我看完代码后发现其实是针对百度近期推荐的主动提交功能的 WordPress 插件。
对于主动提交,其实张戈博客在第一时间就分享了代码版,包括 wp_http、curl_init 和 file_get_contents 三种推送方案,不想用插件的朋友可以继续使用代码版:
我亲自安装看了下,发现还能显示当日提交限额、已提交数量和剩余数量:
这倒是不错,虽然代码版我也能轻松实现,只要借鉴一下插件的查询函数即可,但是代码版就应该保持代码版的简洁高效才好。
但是,在我看完整个插件的关键代码后,发现依然存在以前那个结构化插件的弊病:修改已发布文章或页面会重复推送到百度!一是会拖慢文章更新提交的速度,二是重复提交很有可能会被百度判断为内容不稳定而放入沙盒,造成收录延迟展示的问题!
不过,有了以前的思路,我很简单的就解决了重复推送的问题:文章首次发布时,会推送到百度,如果推送成功则新增一个名称为 baidusubmit 的自定义栏目。回头再来更新修改该文章时,则先判断是否存在这个自定义栏目,如果存在则不再推送到百度。
简单贴一下我修改 2 个关键的地方:
①、推送前先进行自定义栏目的判断:
②、成功推送后则新增自定义栏目:
这样就保证了每篇文章只会成功推送一次。如果你铁了心想让某篇文章再大改后重新推送到百度,则只需要删除该文章的自定义栏目 baidusubmit 即可:
如果还有疑问,建议阅读一下张戈博客以前分享的相关文章:
最后,提供优化版的下载地址:
如果你想安装这个插件,那么推荐你使用张戈博客分享的优化版,有益而无害!
安装插件后,记得到插件设置界面填写域名和 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 更新记录:
在百度官方贴中发现作者已更新了插件,主要是为了解决插件在低版本下会报致命错误的问题。所以,张戈博客也在发现后第一时间更新了本文分享的优化版插件,使用报错或者首次使用只需从本文下载安装即可。已正常使用的朋友可以无需更新。
已经转载了 谢谢了
不错不错
您好咨询个问题,我刚刚要建站。新手一个。目前贵站是二级域名www.zhang.ge访问自动跳转到一级域名zhang.ge,zhang.ge不变。请问是如何做到的呢!我的访问www.iliulei.com就是www.iliulei.com,iliulei.com就是iliulei.com如何修改呢
先确认服务器的web软件是什么,当然,如果是虚拟主机一般后台会提供相关设置。这个叫301跳转,百度搜不带www的301到带www就可以找到一堆教程。
我之前也觉得这个插件是百度以前推出的WordPress结构化数据插件的更新版本,看来我理解错了
这个插件真的对网站收录有效果吗?
谢谢张哥分享,学习了,我也试试用一下。
不知道会不会被收录,百度出的插件应该还不错
回去试试看。
赞
无法启用插件,因为它引起了一个致命错误(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
这个插件好,不然被丢进沙盒就悲催啦
何必用自定义字段来判断是不是新发布的文章?自定义字段纯属浪费存储资源。
用下面的代码即可:
先膜拜一下大神,敬仰已久。
用自定义栏目其实也是为了让后面想再推送时删除就行。
而且,如果用大神的方法,如果发布的时候推送失败了,后面就再也不会推送了。
而自定义栏目,推送失败就不会添加,更新时会继续推送一下。
大神不敢当,相互学习嘛。
推送失败概率极低,如果一定要确保万无一失的话,这种机制可能更好一些:推送失败才添加自定义栏目。如果推送成功后添加的话,那每篇文章都有一个多余的栏目,仅仅是为了做个标记,手动删除也麻烦。
判断是否推送用下面的代码:
推送成功后自动删除自定义栏目
感谢回复,已更新到文章中。
发个评论居然泄露了这么多隐私!!!!
连所在地都被挖出来了,下次不敢发了。
:!: 海南三亚好地方,过些天我可能就要来了。
另外忘了一点,get_permalink函数本身就支持post_id来做参数,百度原版的代码何必再get_post一次呢?这样应该好点:
好,这个回头我更新到代码中,还真没注意到。。。
很好 感觉百度有些急于求成
主题自带了推送,所以就把插件都去掉了!
无法启用插件,因为它引起了一个致命错误(fatal error)。 以及解决了
修改代码baidu-links-submit.php的17行为
define('BAIDU_APPS_PATH', plugin_dir_path(__FILE__)); 就可以了 是因为php版本太低
本文已更新
博客之前已安装百度数据提交插件《百度sitemap》,安装两个会有影响吗?如果有影响 文中的这个会不会好点?
建议卸载之前的插件
这个插件效果和代码版的是不是一样的?效果会更好吗
代码版正常使用的话,无需安装插件
好牛逼的技术啊!! :razz:
这个插件和百度的sitemap插件有什么区别?冲突吗?安装这个插件是不是要把百度的sitemap插件先卸载了
如果指的是百度官方推出的那个结构化数据插件,那么建议卸载掉,冲突倒不会,但是会重复推送数据。
收纳
常来学习学习,吸收些有用的营养,感谢博主的分享。
不错啊 这个... :grin:
准备用上
唉,我现在是推送了也不收录,好郁闷呀!
Jager你好,在使用这种方法提交时我发现一个问题,提交后过几天在站长平台的统计中有时看不到提交链接的数据,但是文章的baidusubmit已经变成1了,这是不是有什么问题?
文章中代码已更新,如果推送失败才会新增一个自定义栏目,值为false,你可以试试。
好东西,收藏了!
使用了这个插件 发表新文章 后台查看提交次数还是0,查了查插件LOG,
错误是“2015-11-14 00:36:17 error:Empty reply from server, {"url" …………” 这种错误。。。请问怎么解决。。。
我说怎么一直提交不了,原来是插件里代码有问题。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 就好,去掉多余的斜杠。
这个插件是百度开发的,我倒是没有修改你说到这个代码,双斜杠在大部分主机上应该是没有问题的,比如Linux系统。其他遇到这个问题的朋友可以参考楼主的解决办法。
Centos系统 PHP5.3 APACHE 2.2.15 不知道是不是个例。
前面的方法我提供错了,应该将common.class.php里 '/url?site= 的斜杠去掉。
请问,为什么LOG文件提示success:'{"remain":500,"success":0,"not_same_site":
计数器依然是已提交0?
我试试看,我最近这10天一直都是推送失败!
之前一直用的好好的,这两天发现了跟楼主一样的问题,我今天试试看楼主的办法是否可行
是在别的站看到这个方法 终于找到原创了,发个留言支持下 另外也送了"地址"
现在百度有3个插件,1、结构化 百度sitemap插件 看了评论你说这个可以卸载了 2、WP BaiDu Submit插件 3、baidu links submit插件。第3个就是本文说的,第2个是自动提交链接的那种,后两个插件啥关系啊 都需要安装吗
选最新的就可以了,不需要重复安装。
3、baidu links submit插件 好像新一点。 第二个第四版都是8个月以前了
签到成功!签到时间:下午4:40:03,每日签到,生活更精彩哦~
张哥,你好!
之前看到你的同步至新浪微博的文章就用,可以同步了,但是再用这个百度推送插件,昨晚试了一下,新浪微博倒是同步,但是好像没推送到百度啊。。是不是有冲突!
应该不会有冲突
wordpress 装在二级目录下 即 http://www.libaijie.com.com/blog的可以使用吗?
发了几篇博文都没有提交成功,日记如下
我也遇到了这个问题,成功解决了,再次感谢Jager以及楼上的“大袋鼠”,解决方法:解决WordPress百度链接主动提交插件Baidu-links-submit无法成功提交error:Empty reply from server
大袋鼠的方法都是!
推送全部失败,日志里面都是这样的信息。。
这个插件貌似有新版本了 :mrgreen:
昨天试了下,应该是推送成功了, log里显示success:'{"remain":1,"success":1}',这应该和百度主动推送升级有关系吧(http://zhanzhang.baidu.com/wiki/872)今天在百度站长那看了昨天有推送信息。唯一的问题是插件后台推送统计那一直没变化已提交一直显示0,不知道是不是因为百度推送升级关系。
今天看到百度站长推送的文章说一个Baidu Submit URLs的插件提交不存在的链接,感觉换了博主这个,希望不要出问题啊……
六六六啊
你好,请问用了这个插件后,还有必要
在“更新服务”中增加百度的Ping地址吗?
增加的话,修改文章的时候,会不会重复提交呢
没什么问题,用吧。
表哥 这个还能用吗 感觉写了文章以后没有推送0 0
您好,为什么最近插件显示推送成功,日志也没问题,但是百度站长工具里一直显示主动推送0呢?
经过这几天的测试,发现是百度站长工具统计中,总是少一个,比如当天发了三篇文章,后台插件处也显示提交了三个,日志也显示成功三个,但是第二天百度站长工具链接提交那里只会显示2个
定时发表的文章不会推送,就没人发现这个问题么?
老哥,请问一下,这插件兼容wordpress5.02 吗? 具体内容是:再发布新文章后,回头查看插件内已提交和剩余数额不变。
这个要具体测试下才知道,很久没搭理过了。
来学习下相关知识,真不错。
这么长时间了还能用吗这个插件