我們一起來看一篇關于PHPCMS實現自動推送URL到百度站長平臺,希望此教程能夠幫助到各位朋友.
百度站長平臺開放url推送接口,可以使用調用接口的形式主動及時推送url給百度,下面演示在PHPCMS系統中如何使用接口自動推送URL到百度站長平臺.
在PHPCMS的libs/functions/global.func.php文件中添加一個百度推送函數:
- /**
- * 百度站長平臺鏈接推送
- * @param $bdurls url數組
- * @date 2015.8.8 15:19
- */
- function push_baidu($bdurls){
- $api = 'http://data.zz.baidu.com/urls?site=www.dayecn.com&token=自己去百度站長平臺獲取';
- $ch = curl_init();
- $options = array(
- CURLOPT_URL => $api,
- CURLOPT_POST => true,
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_POSTFIELDS => implode("/n", $bdurls),
- CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
- );
- curl_setopt_array($ch, $options);
- $result = curl_exec($ch);
- $result = json_decode($result, 1);
- return $result;
- }
在需要推送的動作,如發布一篇文章,修改一篇文章,或者生成一篇靜態文章頁的時候可以調用這個方法,比如我想在批量生成靜態頁的地方調用這個接口,去modules/content/crete_html.php文件的batch_show方法里,調用上面定義的方法:
- foreach($rs as $r) {
- if($r['islink']) continue;
- $this->db->table_name = $tablename;
- $r2 = $this->db->get_one(array('id'=>$r['id']));
- if($r2) $r = array_merge($r,$r2);
- //判斷是否為升級或轉換過來的數據
- if(!$r['upgrade']) {
- $urls = $this->url->show($r['id'], '', $r['catid'],$r['inputtime']);
- } else {
- $urls[1] = $r['url'];
- }
- $bdurls[] = $r['url'];
- $this->html->show($urls[1],$r,0,'edit',$r['upgrade']);
- } //Vevb.com
- //推送百度平臺
- $push_result = push_baidu($bdurls);
- $msg = '';
- if($push_result['success'] < 1){
- $msg = '百度聯盟推送鏈接失敗!';
- }
最后幾行是修改后新加的代碼,首先要把更新哪些靜態頁的url放進數組里,再調用這個方法傳參即可.
要在其他動作如添加或者編輯文章的時候推送,原理是一樣的,找到對應的地方調用推送方法就行了
百度鏈接提交三種方式:
1、主動推送:最為快速的提交方式,推薦您將站點當天新產出鏈接立即通過此方式推送給百度,以保證新鏈接可以及時被百度收錄。
2、sitemap:您可以定期將網站鏈接放到sitemap中,然后將sitemap提交給百度。百度會周期性的抓取檢查您提交的sitemap,對其中的鏈接進行處理,但收錄速度慢于主動推送。
3、手工提交:一次性提交鏈接給百度,可以使用此種方式。
下面介紹使用curl主動推送鏈接的方式PHP示例,使用curl擴展:
- $urls = array(
- 'http://www.example.com/1.html',
- 'http://www.example.com/2.html',
- );
- $api = 'http://data.zz.baidu.com/urls?site=www.dayecn.com&token=Db0ZoYUOwUyEp87Z';
- $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;
首先要在百度站長平臺驗證站點,然后獲取token密鑰,才有權限推送url給百度。百度站長平臺:http://zhanzhang.baidu.com
可以在發布一篇文章的時候就把這篇文章的url推送給百度站長平臺,或者批量推送,通過返回的$result狀態判斷推送是否成功,返回的狀態碼說明:
- pse: separate; border-spacing: 0px; -webkit-text-stroke-width: 0px;">
新聞熱點
疑難解答