解決不能在Windows Live Writer中使用 WordPress MU 1.5.1 的 wp_getUserBlogs錯誤

來源:互聯網
上載者:User

來自http://lichao.net/weblog/web-development/blogging/111.html#comment-11956

一直使用 Microsoft Windows Live Writer 來更新自己的部落格,感覺都不錯。可是在前幾天剛把自己所有的部落格 WordPress MU 多使用者版1.3.3 升級到 1.5.1後,WLW卻不能好好地與MU合作了。具體是這樣的,等自己在 WLW 裡將文章寫好後,按”Publish“ 來發表,卻出現了一個 wp.getUsersBlogs 調用不存在的錯誤,言道要麼是使用者名稱出錯,或密碼不對。自己想到可能升級將我的使用者名稱和密碼搞亂了,所以趕緊登入到後台將使用者名稱和密碼統統更新了一把。再到WLW裡重新發表新文章,還是同樣的錯誤資訊。為了測試一下是不是僅僅撰寫出錯,我試著在WLW裡開啟我部落格上的文章,看到狀態條動了一會,最後也是一個 wp.getUsersBlogs 不存在的錯誤。看來 WLW 整個與 WordPress MU 1.5.1 就不相容了。

下面是我得到錯誤資訊的全文:

log Server Error - Server Error -32601 Occurred server error. requested method wp.getUsersBlogs does not exist. You must correct this error before proceeding.

當然不甘心就因為一個升級而放棄WLW,趕忙到 WP MU 官方支援網站上找對策。竟然發現這就是個MU新版本的bug(見有人提交的錯誤報表http://trac.mu.wordpress.org/ticket/631)。 這個錯誤的罪魁禍首就是這個xmlrpc.php 檔案。

要解決這個問題,主要需要改動兩個地方。首先,當然是用你的文字編輯器開啟 xmlrpc.php 檔案。

第一、 找到第94行,如下:

Line 94 ‘blogger.getUsersBlogs’ => ‘this:blogger_getUsersBlogs’,

然後在它的前邊加上下面這行代碼:

‘wp.getUsersBlogs’=> ‘this:wp_getUsersBlogs’,

第二:再到檔案的753行,開始複製代碼到791行,然後回到代碼221行 “* WordPress XML-RPC API” 處,粘帖整個剛才複製的代碼。對這些代碼稍作修改,就相當於插入一個新的 function 名叫 wp_getUserBlogs 修改後的代碼如下:

* wp_getUsersBlogs 
*/ 
function wp_getUsersBlogs($args) { 
    $this->escape($args); 
    $username = $args[0]; 
    $password = $args[1]; 
    if (!$this->login_pass_ok($username, $password) ) 
        return $this->error; 
    do_action(’xmlrpc_call’, ‘wp.getUsersBlogs’); 
    $user = set_current_user(0, $username); 
    $blogs = (array) get_blogs_of_user($user->ID); 
    $struct = array(); 
    foreach ( $blogs as $blog ) { 
        // Don’t include blogs that aren’t hosted at wordpress.com 
        if ( $blog->site_id != 1 ) 
            continue; 
        $blog_id = $blog->userblog_id; 
        switch_to_blog($blog_id); 
        $is_admin = current_user_can(’level_8′); 
        $struct[] = array( 
            ‘isAdmin’  => $is_admin, 
            ‘url’         => get_option(’home’) . ‘/’, 
            ‘blogid’    => $blog_id, 
            ‘blogName’  => get_option(’blogname’), 
            ‘xmlrpc’   =>get_option(’home’). ‘/xmlrpc.php’ 
        ); 
     } 
    return $struct; 
}

最後、儲存你的修改,再通過FTP上傳這個檔案到你的伺服器,覆蓋原來的 xmlrpc.php檔案,就行了!你又可以用你心愛的WLW來更新你的MU部落格了!

當然,如果你不想直接更改xmlrpc.php檔案,你可以到這裡下載已經改好的 xmlrpc.php 檔案。另外,我關於這個問題的英文原文可以在這裡找到。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.