在網上一直流傳傳著一個加快 WordPress 收錄的教程,那就是在 WordPress 後臺的更新通知服務里加上百度 ping XML_RPC 地址來通知百度網站更新了快來收錄,詳情見百度站長平臺:(百度 ping) 當時小編也覺得蠻不錯的就把百度 ping 和谷歌 ping 的地址一起加到了 WordPress 更新通知服務列表裡,如下圖:

由於最近小編放寒假了所以時間多沒事也喜歡分析下網站日誌,最近在分析日誌的時候小編髮現新增 ping 通知服務後,每次更新來的都是谷歌的蜘蛛,百度蜘蛛根本不來。按理說百度蜘蛛 就算再大牌也不能一次都不來啊,畢竟是百度也是支援 ping 協議的。小編仔細研究了幾次才發現原來百度還是耍大牌了,各大廠商,當然也包括 WordPress,預設的 ping 服務都是是 3 個引數,即網站 名稱,首頁地址,feed 地址;而百度這貨的 ping 呢,則是 4 個引數,即網站名稱,首頁地址,新網頁的地址,feed 地址。所以使用 WordPress 預設的 ping 通知服務是通知不了百度的。。。

既然 WordPress 的 ping 通知不相容百度的 ping 服務那麼我們只有苦逼的手動去提交地址麼?其實小編已經找到解決方法了,將以下程式碼加到主題的 functions.php 檔案即可解決此問題,程式碼如下:

function wxd_baiping($post_id) {
    $baiduXML = 'weblogUpdates.extendedPing' . get_option('blogname') . ' ' . home_url() . ' ' . get_permalink($post_id) . ' ' . get_feed_link() . ' ';
    $wp_http_obj = new WP_Http();
    $return = $wp_http_obj->post('http://ping.baidu.com/ping/RPC2', array('body' => $baiduXML, 'headers' => array('Content-Type' => 'text/xml')));
    if(isset($return['body'])){
        if(strstr($return['body'], '0')){
            $noff_log='succeeded!';
        }
        else{
            $noff_log='failed!';
        }
    }else{
        $noff_log='failed!';
    }
}
add_action('publish_post', 'wxd_baiping');

此方法小編已經測試幾天了,釋出文章後的確能通知到百度爬蟲來抓取網頁,不相信?釋出文章後過幾分鐘再自己看看網站日誌~