2012-09-25 58 views
5

我正在從網站遷移到使用WordPress的另一個網站。使用XML-RPC WordPress API和Python發佈帖子

我爲我的需求(使用插件自定義帖子類型)創建了新的自定義類型,併爲每個自定義類型創建了類別。

然後,我用Python(從this article)編寫了一個腳本,它從db獲取帖子,並使用從3.4版開始支持的新的Wordpress XML-RPC API在新(測試)網站上遠程推送它們。 X。

目前,我可以發佈一個新的職位與正確的職位類型。但是,如果我指定一個類別,WordPress的總是返回我這個錯誤:

xmlrpclib.Fault: <Fault 401: 'Sorry, one of the given taxonomies is not supported by the post type.'> 

我敢肯定,後類型由指定的分類法支持。我想我使用錯誤的語法來指定類別ID。下面的代碼:

import datetime, xmlrpclib, MySQLdb 

def post_remotely(post_data): 

    wp_url = "[my wordpress blog url]" 
    wp_username = "[myuser]" 
    wp_password = "[mypasswd]" 
    wp_blogid = "0" 

    status = 'publish' 

    server = xmlrpclib.ServerProxy(wp_url) 

    data = { 'post_title': post_data['title'], 'post_content': post_data['content'], 
      'post_date': post_data['data'], 'post_type': post_data['post_type'], 'terms': post_data['categories'], 
      'post_status': status } 

    post_id = server.wp.newPost(wp_blogid, wp_username, wp_password, data) 

    return post_id 

而且呼叫者,以指定類別:

new_post['categories'] = [ { 'term_id': 3, 'taxonomy': 'news-cat' } ] 

「新聞貓」是關聯到自定義類型「新聞」的分類的名稱。 「term-id」是我使用phpMyAdmin發現的類別的id。

我也試過其他方法,但無濟於事。沒有這個類別,它很好地工作。

預先感謝任何幫助:)

回答

9

XML-RPC WordPress API Document說:

struct terms: Taxonomy names as keys, array of term IDs as values. 
struct terms_names: Taxonomy names as keys, array of term names as values. 

這意味着術語和terms_names是目錄,關鍵name是要分類的名稱,和值是數組列表。

如果你想設置的種類,你應該設置

‘terms‘:{‘my-category’:[4]} 

‘terms_names’:{‘my-category’:["Wordpress"]} 
員額結構,其中「我的類別」是你的分類的名稱

一些信息來自:解決Python發佈wordpress內容返回抱歉,文章類型不支持您的分類法.錯誤

+0

關於這個特定問題的文檔是可怕的。感謝分享!這非常有用! – jperelli

+0

嗨,我一直在尋找一種方法來設置使用wp.newpost的分類學家長,我無法找到它(我已經發布了一個沒有答案的問題),所以如果有人可以幫助我將深深感激它。謝謝 – JordanBelf

相關問題