免插件WordPress发布文章主动推送到百度加快收录

工作实在太忙,也没时间打理网站。最近公司额外交待了一些网站 SEO 方面的优化任务让我关注(这就是啥都要会、啥都要做的苦逼运维的真实写照了...)。
免插件WordPress发布文章主动推送到百度加快收录

 

一、主动推送

先来看下百度对于主动推送的一些说明:

主动推送:最为快速的提交方式,建议您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录

主动推送支持多种途径:比如curl 、post、php以及ruby等。而且支持一次性提交多条网站页面地址,不过每个站点每天可推送的次数暂时限制在50次。

使用主动推送功能会达到怎样效果?
①、及时发现:可以缩短百度爬虫发现您站点新链接的时间,使新发布的页面可以在第一时间被百度收录
②、保护原创:对于网站的最新原创内容,使用主动推送功能可以快速通知到百度,使内容可以在转发之前被百度发现

——摘自百度官方:原文地址

二、PHP代码

①、WrodPress 通用方式【推荐使用】

补充于2015-07-03:不经意看到张戈博客之前写的发布文章同步新浪微博的代码,突然发现原来都可以更简单!因为 WordPress 本来就存在支持 POST 或 GET 方法的 WP_Http 类,这样一来妈妈再也不用担心我的主机是否支持这个支持那个了!

先摘一段来自鱼叔的相关描述:

在 PHP 中发起 HTTP 请求并不是很难,有很多种方法:使用 fopen() 函数,使用 CURL 扩展,使用文件操作函数如 fsockopen()fwrite()等,但是问题是各种方法所依赖的服务器的配置把不同,有些服务器可能无法支持,不过 WordPress 自身开发了新的 API WP_Http 使得 WordPress 在所有环境下都非常容易发起 HTTP Request。

PHP 类:WP_Http

WordPress 2.7 开始引入了一个新的 PHP Class:WP_Http(在 wp-includes 目录 http.php 文件中)。这个 Class 的强大之处是它会检测服务器的情况,选择最好的方法去实现 HTTP 请求,所以我们自己无须去检测 HTTP 扩展,fopen(),是否存在curl_init() 函数,这个 Class 都会包办这些检测。

-------摘自我爱水煮鱼《使用 WP_Http 在 WordPress 中发起 HTTP Request

简单的修改一下之前的代码,即可轻松搞定:

  1. /**
  2. * WordPress发布文章主动推送到百度,加快收录保护原创【WordPress通用方式】
  3. * 文章地址:https://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) == 1return;
  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', 1true);
  19.         }
  20.     }
  21.     add_action('publish_post', 'Baidu_Submit', 0);
  22. }

②、curl_init 方式

WordPress发布文章主动推送到百度的代码非常简单,只要稍微修改一下张戈博客之前分享的《WordPress发布文章自动同步到新浪微博(带特色图片)》中的代码即可搞定:

  1. /**
  2. * WordPress发布文章主动推送到百度,加快收录保护原创【curl_init方式】
  3. * 文章地址:https://zhang.ge/5041.html
  4. */
  5. if(!function_exists('Baidu_Submit') && function_exists('curl_init')) {
  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) == 1return;
  11.         $url = get_permalink($post_ID);
  12.         $api = 'http://data.zz.baidu.com/urls?site='.$WEB_DOMAIN.'&token='.$WEB_TOKEN;
  13.         $ch  = curl_init();
  14.         $options =  array(
  15.             CURLOPT_URL => $api,
  16.             CURLOPT_POST => true,
  17.             CURLOPT_RETURNTRANSFER => true,
  18.             CURLOPT_POSTFIELDS => $url,
  19.             CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
  20.         );
  21.         curl_setopt_array($ch, $options);
  22.         $result = json_decode(curl_exec($ch),true);
  23.         //如果推送成功则在文章新增自定义栏目Baidusubmit,值为1
  24.         if (array_key_exists('success',$result)) {
  25.             add_post_meta($post_ID, 'Baidusubmit', 1true);
  26.         }
  27.     }
  28.     add_action('publish_post', 'Baidu_Submit', 0);
  29. }

③、file_get_contents 方式

鉴于有个别站长反馈代码添加后,发布或更新文章,自定义栏目中都不会出现我们期望的baidusubmit,我要他们检查 token 和域名,也反馈是正确的,直到我亲自给一个站长 Debug 时才发现是他主机的 curl_exec()函数被禁用了!既然这个函数都不能用了,那代码也肯定无法正常推送了!

于是,我额外写了一个普遍支持的 file_get_contents 方式,代码如下:

  1. /**
  2. * WordPress发布文章主动推送到百度,加快收录保护原创【file_get_contents方式】
  3. * 文章地址:https://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) == 1return;
  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', 1true);
  27.         }
  28.     }
  29.     add_action('publish_post', 'Baidu_Submit', 0);
  30. }

Ps:file_get_contents 的运行效率应该是略低于curl的,不过就推送一条数据,就基本没有差别啦!如果你使用第一种方式没有成功,那么就试试 file_get_contents 方式吧!

③、代码部署

从上面选好合适的代码后(推荐①),先打开百度官方页面:http://zhanzhang.baidu.com/linksubmit/index,获取你网站的专属的 token 值,替换到代码中的 "xxxxxxxxx"(Ps:域名已更新为动态变量,无需另外更改)。

免插件WordPress发布文章主动推送到百度加快收录

最后将修改后的代码添加到主题目录下的 functions.php 函数模板并保存。

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

免插件WordPress发布文章主动推送到百度加快收录

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

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

三、其他说明

用心思考的童鞋,应该可以看出百度的目的应该是为了获取文章准确的发布时间,这一项改进很明显就是为了配合之前百度取消快照之后,新增的“文章发布时间"的改动:

免插件WordPress发布文章主动推送到百度加快收录

我个人认为,之前百度应该是通过分析文章中的时间戳来确认原创文章的发布时间。但是时间戳是可以作弊的,而百度蜘蛛的抓取也不是及时的,这样就带来了文章是否真实原创的争议!比如张戈博客发布一篇文章,蜘蛛还没来得及抓取,就被大站转走而且还不带来源链接,就会出现一种情况:大站的蜘蛛抓取频繁,第一时间就抓到了转载的文章,认为是原创,而真正的原创却由于后抓取被蜘蛛认为是伪原创!是个人都要吐血了吧?

现在有了主动推送就好多了,高质量原创文章发布,第一时间就会推送到百度,从而告知了最准确的原创来源,从而杜绝了抄袭者和原创者出现角色互换的尴尬!还在使用老版 baidusubmit 插件的朋友,可以赶紧试试张戈写的代码了!

最新补充:早上不经意看到百度官方推荐文章,果然不出我所料:

新的主动推送工具最大的亮点就是“快”。
这个工具直接将链接推送给百度,而原来的工具推送的是结构化数据,需要百度进一步解析和内部排序。天下功夫,唯快不破。高手对决中,1微秒决定胜负。快速推送带来的好处是两方面的:一是及时发现,可以缩短百度爬虫发现您站点新链接的时间,使新发布的页面可以在第一时间被百度收录;二是保护原创,对于网站的最新原创内容,使用主动推送功能可以快速通知到百度,使内容可以在转发之前被百度发现。

新的主动推送工具第二个特点就是“人性化”。
首先是密匙的人性化,同一个帐号下所有站点的密匙相同。这一点对于一个绑定了多个子域名的大站来说,是个福音,不用为每个子域名写个推送程序,节省时间成本和技术成本。第二个人性化是返回数据人性化,返回数据包含返回码和message,推送完后能立即知道推送结果,而老的工具推送后要登录后台才能查看推送结果。

另外,使用这个插件时必须确保推送的是最新、高质量的网页链接。
  刚才说新工具的最大亮点是快,之所以能快,是因为跳过了正常抓取时的好几个步骤。百度这样做,是希望能更加快速的抓取到高质量的网页。如果一个网站经常推送一些老的、垃圾页面的链接,百度会很生气的,会认为网站辜负了他的信任,直接后果是百度不再信任这个网站的推送,导致工具失效,是否有其它更恶劣的后果,比如降低网站评价,这个还有待进一步观察。所以,使用这个工具时一定要注意,老的、低质量的网页链接不要推送了。(Ps:为了测试我的代码,我连续推送了十几次老文章,也是醉了。。。)

然后这位仁兄还给出了主动推送和实时推送的对比清单:免插件WordPress发布文章主动推送到百度加快收录

不久,我又在百度官方WIKI看到了相关文章,已更新到上文当中 。

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有M币奖励和额外收入!

模板下载吧 Wordpress教程 免插件WordPress发布文章主动推送到百度加快收录 https://www.mbxzb.com/blog/wordpress/22613.html

从明天起,做一个幸福的人,喂马、劈柴、周游世界…

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用
查看详情

相关文章

评论
暂无评论
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 威武 友军 顶贴
官方客服团队

为您解决烦忧 - 24小时在线 专业服务