之前百度官方出了一款 WordPress 的結構化資料即時推送外掛,該款 WordPress 外掛的作用是向百度提交結構化資料的 xml,幫助站點保證百度蜘蛛對站點的抓取頻率,但是推送頁面不保證收錄 (http://zhanzhang.baidu.com/schema/index),但是百度官方並沒有推出 Sitemap 的即時推送外掛,其實 Sitemap 的即時推送才能最大機率的保證站點的頁面被抓取並且被收錄,不過大多數站點並沒有開通 Sitemap 許可權,以下是引用百度官方對即時推送的介紹:http://zhanzhang.baidu.com/wiki/215

好了進入正題,其實小編這次寫這篇教程是為一位認識了好幾年的基友寫的~~他的 WordPress 站點也百度站長平臺的 Sitemap 許可權,但是又不知道如何來操作百度 Sitemap 的即時推送~好了閒話就不多說了~直接上程式碼:

function PushBaiDu($post_id,$post){
//百度推送介面地址
    $Push = '百度推送介面地址';
    $PushUrl = get_permalink($post_id);
    $PushDate = $post->post_data;
//構造推送 xml 資料
    $PushXml = '<?xml version="1.0" encoding="UTF-8"?>
    <urlset>
        <url>
            <loc><![CDATA['.$PushUrl.']]></loc>
            <lastmod>'.$PushDate.'</lastmod>
            <changefreq>daily</changefreq>
            <priority>0.9</priority>
        </url>
    </urlset>';
//建立 http 請求物件
    $wp_http_obj = new WP_Http();
//傳送 http post 請求提交 xml 資料
    return $wp_http_obj->post($Push, array('body' => $PushXml, 'headers' => array('Content-Type' => 'text/xml')));
}
add_action('publish_post', 'PushBaiDu');

將以上程式碼加入到當前使用的 WordPress 主題的 functions.php 檔案中即可,記得替換 $Push 變數的值為你們的百度 Sitemap 即時推送介面呼叫地址,如果您的站點沒有開通百度 Sitemap 許可權則此程式碼不可用。

Sitemap 即時推送介面獲取地址:http://zhanzhang.baidu.com/sitemap/pingadd

加上以上程式碼後釋出文章 WordPress 將會自動推送文章到百度的伺服器~本站的部落格聚集地即時推送以及評論福利的核心程式碼都和本教程的程式碼相似,下面來張薇曉朵四月份之前的推送列表截圖:

2014.12.28 補充

如果使用以上程式碼出現報錯:Warning: Missing argument 2 for PushBaiDu(),請將程式碼改成以下版本:

function PushBaiDu(){
    global $post_id;
    global $post;
//百度推送介面地址
    $Push = '百度推送介面地址';
    $PushUrl = get_permalink($post_id);
    $PushDate = $post->post_data;
//構造推送 xml 資料
    $PushXml = '<?xml version="1.0" encoding="UTF-8"?>
    <urlset>
        <url>
            <loc><![CDATA['.$PushUrl.']]></loc>
            <lastmod>'.$PushDate.'</lastmod>
            <changefreq>daily</changefreq>
            <priority>0.9</priority>
        </url>
    </urlset>';
//建立 http 請求物件
    $wp_http_obj = new WP_Http();
//傳送 http post 請求提交 xml 資料
    return $wp_http_obj->post($Push, array('body' => $PushXml, 'headers' => array('Content-Type' => 'text/xml')));
}
add_action('publish_post', 'PushBaiDu');