今早就有朋友在张戈博客留言,说百度又推出了主动提交的 WordPress 插件,让我看看。
官方公告如下:
为了方便广大使用 wordpress 建站的站长朋友及时提交数据,百度站长平台设计和开发了一款 wordpress 插件—Baidu Links Submit 工具,该工具是基于百度站长平台 ping2.0 的链接提交接口。本插件只需您简单的配置下您的 site 和 token 即可使用。确保您的网站以快速的提交方式,以保证新链接可以及时被百度收录。
其实很多人以为这个插件就是百度以前推出的 WordPress 结构化数据插件的更新版本,而实际上,在我看完代码后发现其实是针对百度近期推荐的主动提交功能的 WordPress 插件。
对于主动提交,其实张戈博客在第一时间就分享了代码版,包括 wp_http、curl_init 和 file_get_contents 三种推送方案,不想用插件的朋友可以继续使用代码版:
WordPress 发布文章主动推送到百度,加快收录保护原创
我亲自安装看了下,发现还能显示当日提交限额、已提交数量和剩余数量:
这倒是不错,虽然代码版我也能轻松实现,只要借鉴一下插件的查询函数即可,但是代码版就应该保持代码版的简洁高效才好。
但是,在我看完整个插件的关键代码后,发现依然存在以前那个结构化插件的弊病:修改已发布文章或页面会重复推送到百度!一是会拖慢文章更新提交的速度,二是重复提交很有可能会被百度判断为内容不稳定而放入沙盒,造成收录延迟展示的问题!
不过,有了以前的思路,我很简单的就解决了重复推送的问题:文章首次发布时,会推送到百度,如果推送成功则新增一个名称为 baidusubmit 的自定义栏目。回头再来更新修改该文章时,则先判断是否存在这个自定义栏目,如果存在则不再推送到百度。
简单贴一下我修改 2 个关键的地方:
①、推送前先进行自定义栏目的判断:
②、成功推送后则新增自定义栏目:
这样就保证了每篇文章只会成功推送一次。如果你铁了心想让某篇文章再大改后重新推送到百度,则只需要删除该文章的自定义栏目 baidusubmit 即可:
如果还有疑问,建议阅读一下张戈博客以前分享的相关文章:
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 更新记录:
在百度官方贴中发现作者已更新了插件,主要是为了解决插件在低版本下会报致命错误的问题。所以,张戈博客也在发现后第一时间更新了本文分享的优化版插件,使用报错或者首次使用只需从本文下载安装即可。已正常使用的朋友可以无需更新。