2012-09-25 18 views
5

के साथ एक पोस्ट प्रकाशित करें, मैं एक वेबसाइट से माइग्रेशन कर रहा हूं जो वर्डप्रेस का उपयोग करता है।एक्सएमएल-आरपीसी वर्डप्रेस एपीआई और पायथन को

मैंने अपनी ज़रूरतों के लिए नए कस्टम प्रकार बनाए हैं (प्लगइन कस्टम पोस्ट प्रकार के साथ), और मैंने प्रत्येक कस्टम प्रकार के लिए श्रेणियां बनाई हैं।

मैं तो अजगर में एक स्क्रिप्ट (this article से रूपांतरित) है, जो नए Wordpress XML-RPC संस्करण 3.4 के बाद से समर्थित एपीआई का उपयोग कर db से पोस्ट हो जाता है और उन्हें नए (परीक्षण) वेबसाइट पर दूर से धक्का, नीचे लिखा था। एक्स।

फिलहाल मैं सही पोस्ट प्रकार के साथ एक नई पोस्ट प्रकाशित कर सकता हूं। लेकिन अगर मैं एक वर्ग निर्दिष्ट करते हैं, हमेशा वर्डप्रेस मुझे इस त्रुटि देता है:

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

मुझे यकीन है कि पोस्ट प्रकार दिए गए वर्गीकरण के द्वारा समर्थित है हूँ। मुझे लगता है कि मैं श्रेणी आईडी निर्दिष्ट करने के लिए गलत वाक्यविन्यास का उपयोग कर रहा हूं। कोड यह रहा:

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

"समाचार बिल्ली" कस्टम प्रकार "समाचार" से जुड़े वर्गीकरण का नाम है:

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 

और फोन करने वाले पर, श्रेणी निर्दिष्ट करने के लिए। "टर्म-आईडी" श्रेणी की आईडी है, जिसे मैंने phpMyAdmin का उपयोग करके पाया।

मैंने अन्य दृष्टिकोणों का भी प्रयास किया है लेकिन इसका कोई फायदा नहीं हुआ है। श्रेणी के बिना यह अच्छी तरह से काम करता है।

किसी भी मदद :)

उत्तर

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 निर्देशिका हैं, कुंजी नाम वर्गीकरण आप चाहते हैं उसका नाम है, और मूल्य एक है सारणी सूची।

आप एक वर्ग सेट करना चाहते हैं, तो आप

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

या

‘terms_names’:{‘my-category’:["Wordpress"]} 
पद संरचना, जहां "मेरी-श्रेणी" अपने वर्गीकरण का नाम है में

स्थापित करना चाहिए।

से कुछ जानकारी: 解决Python发布wordpress内容返回抱歉,文章类型不支持您的分类法.错误

+0

प्रलेखन इस विशिष्ट मुद्दे पर भयानक है। साझा करने के लिए धन्यवाद! यह बहुत उपयोगी है! – jperelli

+0

हाय, मैं wp.newpost का उपयोग कर वर्गीकरण अभिभावक को सेट करने के लिए एक तरह से देख रहा था और मुझे यह नहीं मिला (मैंने पहले से ही कोई जवाब नहीं दिया है) इसलिए यदि कोई मदद कर सकता है तो मैं इसकी सराहना करता हूं। धन्यवाद – JordanBelf