1. 程式人生 > >WordPress百度連結主動提交外掛:Baidu-links-submit優化版

WordPress百度連結主動提交外掛:Baidu-links-submit優化版

今早就有朋友在張戈部落格留言,說百度又推出了主動提交的 WordPress 外掛,讓我看看。

官方公告如下:

為了方便廣大使用 wordpress 建站的站長朋友及時提交資料,百度站長平臺設計和開發了一款 wordpress 外掛—Baidu Links Submit 工具,該工具是基於百度站長平臺 ping2.0 的連結提交介面。本外掛只需您簡單的配置下您的 site 和 token 即可使用。確保您的網站以快速的提交方式,以保證新連結可以及時被百度收錄。

其實很多人以為這個外掛就是百度以前推出的 WordPress 結構化資料外掛的更新版本,而實際上,在我看完程式碼後發現其實是針對百度近期推薦的主動提交功能的 WordPress 外掛。

Wordpress百度連結主動提交外掛:Baidu-links-submit優化版

對於主動提交,其實張戈部落格在第一時間就分享了程式碼版,包括 wp_http、curl_init 和 file_get_contents 三種推送方案,不想用外掛的朋友可以繼續使用程式碼版:

我親自安裝看了下,發現還能顯示當日提交限額、已提交數量和剩餘數量:Wordpress百度連結主動提交外掛:Baidu-links-submit優化版

這倒是不錯,雖然程式碼版我也能輕鬆實現,只要借鑑一下外掛的查詢函式即可,但是程式碼版就應該保持程式碼版的簡潔高效才好。

但是,在我看完整個外掛的關鍵程式碼後,發現依然存在以前那個結構化外掛的弊病:修改已釋出文章或頁面會重複推送到百度!一是會拖慢文章更新提交的速度,二是重複提交很有可能會被百度判斷為內容不穩定而放入沙盒,造成收錄延遲展示的問題!

不過,有了以前的思路,我很簡單的就解決了重複推送的問題:文章首次釋出時,會推送到百度,如果推送成功則新增一個名稱為 baidusubmit 的自定義欄目。回頭再來更新修改該文章時,則先判斷是否存在這個自定義欄目,如果存在則不再推送到百度。

簡單貼一下我修改 2 個關鍵的地方:

①、推送前先進行自定義欄目的判斷:

Wordpress百度連結主動提交外掛:Baidu-links-submit優化版

②、成功推送後則新增自定義欄目:

Wordpress百度連結主動提交外掛:Baidu-links-submit優化版

這樣就保證了每篇文章只會成功推送一次。如果你鐵了心想讓某篇文章再大改後重新推送到百度,則只需要刪除該文章的自定義欄目 baidusubmit 即可:

Wordpress百度連結主動提交外掛:Baidu-links-submit優化版

如果還有疑問,建議閱讀一下張戈部落格以前分享的相關文章:

最後,提供優化版的下載地址:

下載地址

如果你想安裝這個外掛,那麼推薦你使用張戈部落格分享的優化版,有益而無害!

安裝外掛後,記得到外掛設定介面填寫域名和 token 值【token 值獲取地址】。另外,如果之前已經集成了張戈部落格的程式碼版,請記得刪除掉,否則首次釋出文章會連續推送 2 次!

2015-09-27 更新記錄:

首先感謝露兜大神的給力提醒,為了減少垃圾資料的產生,將外掛的判斷機制改成:

①、文章首次釋出時進行推送,如果推送失敗則新增自定義欄目 Baidusubmit,值為 false:

PHP
1234567 //判斷推送結果,如果失敗則計入自定義欄目Baidusubmit,值為falseif(!$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,則再次推送並刪除這個自定義欄目。當然, 如果推送失敗將繼續新增,進入第二輪:

PHP
123456789 //只有在首次釋出文章時才進行推送$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,則在編輯文章時再次推送}elseif($Baidusubmit==='false'){delete_post_meta($post_id,'Baidusubmit');Baidu_common::post($_url,$post_id);}

Ps:這裡設定並判斷值是否為 false,主要是為了避免重複推送以前 Baidusubmit 值為 1 的文章。

③、另外,外掛獲取文章地址的寫法存在冗餘呼叫:

PHP
123 $_url=get_permalink(get_post($post_id));已改成:$_url=get_permalink($post_id);

這個改進,同樣感謝露兜的提醒!如果已在正常使用則沒必要折騰這個更新,當然如果你是一個強迫症,那就另說了...

2015-09-28 更新記錄:

在百度官方貼中發現作者已更新了外掛,主要是為了解決外掛在低版本下會報致命錯誤的問題。所以,張戈部落格也在發現後第一時間更新了本文分享的優化版外掛,使用報錯或者首次使用只需從本文下載安裝即可。已正常使用的朋友可以無需更新。