終于解決调用wordpress 4.3 xmlrpc api 发布包含分类的文章时返回“抱歉,文章类型不支持您的分类法”错误的問題
2013-07-11 12:04 Koy 阅读(1213) 评论(0) 编辑 收藏 举报 object postId = blogService.NewPost(0,"admin","123456", new {
post_title = "My post 20130711",
post_content = "This is my post on 2013/07/13.",
post_status = "publish",
post_author = 1,
terms = new {category = new[]{2}}//這個 2 是我新增的一個名叫“工作日志”的分類ID
});
由于 PHP 的解決方案如下
public function create_post( $title, $body )
{
$title = htmlentities( $title, ENT_NOQUOTES, 'UTF-8' );
$content = array(
'post_type' => 'post',
'post_status' => 'pending',
'post_title' => $title,
'post_content' => $body,
'terms' => array('category' => array( 18 ) ),
'comment_status' => 'closed',
);
$params = array( 0, $this->username, $this->password, $content );
return $this->send_request( 'wp.newPost', $params );
}
WordPress在3.4版本中加入了XML-RPC WordPress API系列的xml-rpc函数,这里使用Python作为说明的语言,调用这套接口发布包含分组(category)或者标签(tag)内容的时候,会碰到401错误:
“抱歉,文章类型不支持您的分类法。
”
对应于Wordpress源代码wp-includes/class-wp-xmlrpc-server.php中的原始错误为:
“Sorry, one of the given taxonomies is not supported by the post type.
“
这个错误实际上是在调用Wordpress API时给出的分组信息错误,wp.newPost的文档中关于terms的定义是这样的:
WordPress terms 结构体
- 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.
这里两个东西的定义很隐晦,但仔细想想还是能搞定的。
- struct terms:Taxonomy names as keys, array of term IDs as values,这两个关键字(key, value)暗示着terms是一个字典类型的结构体,Taxonomy names作为关键字,term IDs数组作为对应的值。
- struct terms_names: Taxonomy names as keys, array of term names as values,这两个关键字(key, value)暗示着terms_names是一个字典类型的结构体,Taxonomy names作为关键字,term names数组作为对应的值。
WordPress Taxonomy 是什么
Taxonomy简单来说是一种组织内容的方法,常用的taxonomy名称有
- ‘category‘(分类目录)
- ‘post_tag‘(标签)
- ‘link_category‘(链接分类目录)
Python中如何定义terms
在Post的结构体中如果定义了
'terms':{'category':[4]}
则表示这篇文章的分类目录ID是4,同样,可以使用
'terms_names':{'category':["Wordpress"]}
来表示这篇文章的分类目录为Wordpress.