WordPress 百度主动提交工具
作为目前的国内搜索主流,百度的收录规则与国外搜索引擎如谷歌、必应等不太一样,虽然它也有提供普通的Sitemap模式,但是据它自己所言通过这种方式收录效率是最低的。另外还有一种是自动推送,即在网站所有页面都加入一个JS脚本,有人访问时就会自动向百度推送该链接,但实测经常会被浏览器的AD Block插件阻拦。因此还剩下效率最高的一种方式:主动推送。我试过了一些现成的插件,好像都不太好用。因为是一个简单的功能,所以就自己写了一个小工具来实现。
主动推送规则
通过调用百度的一个接口,并给它传送要提交的链接,即完成了主动推送的过程,根据接口返回的信息可以判断提交的结果如何(成功/部分成功/失败)。
核心代码如下(由百度提供):
$urls = array( |
$urls
就是我们需要推送的 url 数组了,除此之外还有两个需要修改的地方,都在第5行。一是自己站点的域名,二是准入密钥。密钥会由百度站长工具提供。域名则有一点需要注意,必须填写在百度站长平台注册的域名,比如注册的时候是带有 www 的,则这里也必须带 www,否则会返回域名不一致的错误。
API返回的 $result
是一个 JSON 对象,若推送成功可能包含以下字段:
字段 | 是否必选 | 参数类型 | 说明 |
---|---|---|---|
success | 是 | int | 成功推送的url条数 |
remain | 是 | int | 当天剩余的可推送url条数 |
not_same_site | 否 | array | 由于不是本站url而未处理的url列表 |
not_valid | 否 | array | 不合法的url列表 |
示例:
{ |
推送失败可能返回的字段:
字段 | 是否必选 | 参数类型 | 说明 |
---|---|---|---|
error | 是 | int | 错误码,与状态码相同 |
message | 是 | string | 错误描述 |
示例:
{ |
实测小站点一天只能推500条链接,超过了就会报错。不过目前来说是绝对够用了。
实现逻辑
关于这个工具,我能想到的比较合理的使用逻辑是这样的:
- 建站已有一段时间,但是从来没用过百度主动推送,需要能够选择以往的链接并推送之
- 旧的链接都已推送过,需要在有新页面发布时自动将其推送
需要推送的页面包括但不限于:
- 首页
- 文章(Post)
- 页面(Page)
- 目录
- 标签
由于是第一版,目前这个工具的逻辑就是这样的:
- 首先获取到Wordpress站点下所有的正常页面(已发布,无密码)
- 让用户选择哪些页面需要被推送
- 用户点击按钮,请求经由AJAX发回后台
- 后台调用百度接口,实行推送
- 返回并显示结果
实际的效果就像这样(点此参观 2016-03-10更新:由于已更换为插件模式,原页面失效):
这个工具目前还很简陋。当然,如果你没有登录或者已登陆但没有管理员权限的话,点击Submit是会被拒绝的。
未来的目标
虽然是一个简单的东西,但我觉得它可以变得更好:
- 用户应该可以填写自定义的链接
- 它应该记住哪些链接已经被提交过了,这个状态应该显示在页面上,并且不再自动勾选
- 自动触发推送的功能尚未实现,这个也是很重要的
- 表格可以以一种更好的形式展现
- Log可以写得更友好一些
- 做成插件
- ……
如无意外,这些都将在之后的版本更新。