使用XML-RPC WordPress API和Python发布一篇文章

时间:2012-09-25 14:37:37

标签: python wordpress xml-rpc categories

我正在从一个网站迁移到另一个使用Wordpress的网站。

我根据自己的需要创建了新的自定义类型(使用插件自定义帖子类型),并为每种自定义类型创建了类别。

然后我在Python中写下了一个脚本(改编自this article),该脚本从数据库中获取帖子,并使用新支持的Wordpress XML-RPC API在新的(测试)网站上远程推送它们。版本3.4.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' } ]

“news-cat”是与自定义类型“news”关联的分类法的名称。 “term-id”是我使用phpMyAdmin发现的类别的id。

我也尝试过其他方法,但无济于事。没有这个类别,它可以很好地运作。

提前感谢您的任何帮助:)

1 个答案:

答案 0 :(得分: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和terms_names是目录,键名是你想要的分类名称,值是数组列表。

如果要设置类别,则应设置

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

‘terms_names’:{‘my-category’:["Wordpress"]} 
邮政结构中的

,其中“my-category”是您的分类的名称。

来自解决Python发布wordpress内容返回抱歉,文章类型不支持您的分类法.错误

的一些信息