wordpress主动推送文章到百度-最新
标签: wordpress wordpress技巧 最后编辑:2020年5月22日
站长提交链接的方式有以下有四种:
主动推送:目前主动推送是最好的推送方式,它可以及时发现:可以缩短百度爬虫发现您站点新链接的时间,使新发布的页面可以在第一时间被百度收录保护原创:对于网站的最新原创内容,使用主动推送功能可以快速通知到百度,使内容可以在转发之前被百度发现!
sitemap:您可以定期将网站链接放到Sitemap中,然后将Sitemap提交给百度。百度会周期性的抓取检查您提交的Sitemap,对其中的链接进行处理,但收录速度慢于主动推送。如果你是每天都有新链接产生的话不推荐你使用这个方式,因为百度不会经常来抓取,文章很有可能在被百度抓取之前就被别人转发了。
手工提交:如果您不想通过程序提交,那么可以采用此种方式,手动将链接提交给百度。前提是你的网站是优质站点才能主动推送!!!
自动推送:是轻量级链接提交组件,将自动推送的JS代码放置在站点每一个页面源代码中,当页面被访问时,页面链接会自动推送给百度,有利于新页面更快被百度发现。这种方法适合觉得主动推送方式的技术门槛较高的站长添加,自动推送由于实现便捷和后续维护成本低的特点,适合技术能力相对薄弱,无能力支持全天候实时主动推送程序的站长。站长仅需一次部署自动推送JS代码的操作,就可以实现新页面被浏览即推送的效果,低成本实现链接自动提交。
但是加上JS代码会拖慢网站的速度,站长可以根据自身条件选择。
ps:如果已经在使用链接提交里的主动推送(或sitemap)的网站也是可以再部署自动推送代码的,二者之间互不冲突,互为补充。已经使用主动推送的站点,依然可以部署自动推送的JS代码,二者一起使用。
因为我平时都是采用定时任务发布文章,所以可以采用wordpress自带的
publish_future_post
钩子函数在文章从未发布状态到发布状态的时候监听文章的状态,可以在发布的第一时间将文章推送到百度站长里面。如果你没有使用定时任务呢,想要每次发布文章的时候就把文章推送到百度站长的话可以把 publish_future_post 改成 publish_post,这样就能监听在发布文章的时候实时地推送到百度站长里面及时的收录,保护自己的原创内容,毕竟大家写作不易。
实现主动推送代码如下:
add_action( 'publish_future_post', 'send_baidu' ); function send_baidu($postid){ $urls = array( get_permalink($postid), ); $api ='http://data.zz.baidu.com/urls?site=https://你的网址&token=百度站长获取token'; $ch = curl_init(); $options = array( CURLOPT_URL => $api, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => implode("\n", $urls), CURLOPT_HTTPHEADER => array('Content-Type: text/plain'), ); curl_setopt_array($ch, $options); $result = curl_exec($ch); // echo $result; $time = time(); $file = dirname(__FILE__).'/baiduSubmit.txt'; if(date('Y-m-d',filemtime($file)) != date('Y-m-d')){ $handle = fopen($file,"w"); }else{ $handle = fopen($file,"a"); } $resultMessage=""; if($result['message']){ $resultMessage= date('Y-m-d G:i:s',$time)."\n提交失败".$result['message'].":\n网址:".get_permalink($postid)."\n\n".$result; } if($result['success']){ $resultMessage= date('Y-m-d G:i:s',$time)."\n提交成功".":".get_permalink($postid)."\n\n"; } fwrite($handle,$resultMessage); fclose($handle); }
为了让大家能够直观的了解到文章推送的情况,我将百度站长推送url地址的API接口返回结果做成了日志文件,会在当前主题目录下生成一个baiduSubmit.txt的文件,生成结果如下:
2019-03-14 10:25:33 提交成功:https://www.prettywordpress.com/wordpress/wordpress-baidu-included.html
可能遇到的问题:
一、如果日志文件里面时间不对的话,可以试试把$time = time()改成下面这样(time()是获取的服务器端时间):
$time = time()+8*60*60;
二、或者在代码最前面加上:
date_default_timezone_set("Asia/Shanghai");
三、或者修改php.ini文件:
找到php.ini中的“;date.timezone =”这行,将“;”去掉,改成“date.timezone = PRC”(PRC:People's Republic of China 中华人民共和国),重启Apache。
如果没有创建文件的话,fopen函数会自动创建文件,在由fwrite函数写入数据。if里面做了个简单的时间判断,如果时间不一样就会清除之前的数据。大家也可以根据自己的情况改写方法。如果对fopen和fwrite函数不了解的小伙伴可以参考下面链接的文章哦。
网站的token在百度站长的普通收录页面有,大家只需要将网址和token改成自己的,然后把代码复制到当前使用的主题function下即可。如果对于fopen不了解的小伙伴可以点击这篇文章,里面讲解了fopen、fwrite和fclose函数的用法与参数详解:PHP如何创建文件并且写入数据 。本站点还有很多关于wordpress的优化和使用技巧,大家感兴趣的可以在wordpress分类目录下阅读,喜欢本网站的朋友可以多多关注本网站,我会每天定时更新文章哟~
本文地址:https://www.prettywordpress.com/wordpress/actively-pushes-articles-baidu.html
说:来学习一下,应该用得上