2012-09-25 43 views
5

Tôi đang thực hiện di chuyển từ trang web sang trang web khác sử dụng Wordpress.Xuất bản một bài đăng bằng cách sử dụng XML-RPC WordPress API và Python với danh mục

Tôi đã tạo các loại tùy chỉnh mới cho các nhu cầu của mình (với các loại Bài đăng tùy chỉnh plugin) và tôi đã tạo các danh mục cho từng loại tùy chỉnh. Sau đó tôi đã viết một kịch bản bằng Python (điều chỉnh từ this article), nhận các bài đăng từ db và đẩy chúng từ xa trên trang web mới (thử nghiệm), sử dụng API XML-RPC Wordpress mới được hỗ trợ kể từ phiên bản 3.4. x.

Hiện tại tôi có thể xuất bản bài đăng mới với loại bài đăng chính xác. Nhưng nếu tôi chỉ định một danh mục, wordpress luôn trả về cho tôi lỗi này:

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

Tôi chắc chắn rằng loại bài đăng được hỗ trợ bởi phân loại đã cho. Tôi nghĩ rằng tôi đang sử dụng một cú pháp sai để xác định id danh mục. Dưới đây là các mã:

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 

Và trên người gọi, để xác định thể loại:

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

"tin tức-cat" là tên của phân loại liên quan đến các loại tùy chỉnh "tin tức". "term-id" là id của danh mục mà tôi phát hiện bằng phpMyAdmin.

Tôi cũng đã thử các cách tiếp cận khác nhưng không có kết quả. Không có danh mục, nó hoạt động độc đáo.

Cảm ơn trước sự giúp đỡ nào :)

Trả lời

9

XML-RPC WordPress API Document nói:

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. 

Điều này có nghĩa các điều khoản và terms_names là thư mục, tên chính là tên của phân loại mà bạn muốn, và giá trị là một lập danh sách.

Nếu bạn muốn thiết lập một thể loại, bạn nên đặt

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

hoặc

‘terms_names’:{‘my-category’:["Wordpress"]} 

trong bài cấu trúc, trong đó "my-loại" là tên của phân loại của bạn.

Một số thông tin từ: 解决Python发布wordpress内容返回抱歉,文章类型不支持您的分类法.错误

+0

Tài liệu về vấn đề cụ thể này thật khủng khiếp. Cám ơn vì đã chia sẻ! Điều này cực kỳ hữu ích! – jperelli

+0

Xin chào, tôi đã tìm kiếm cách để đặt cha mẹ phân loại bằng cách sử dụng wp.newpost và tôi không thể tìm thấy nó (tôi đã đăng câu hỏi không có câu trả lời) vì vậy nếu ai đó có thể giúp tôi đánh giá cao nó. Cảm ơn – JordanBelf

Các vấn đề liên quan