我使用Basic Auth创建了这个小脚本来创建wordpres帖子,并且它有效。问题是当我尝试为帖子分配多个类别时。
引用非常含糊不清。它说categories
字段必须是一个数组。但它没有指定它是否应该是category
个对象的数组,或者是否必须将这些类别的id
传递给该字段。
https://developer.wordpress.org/rest-api/reference/posts/#schema-categories
所以我试图让它失败,所以我可以从异常消息中获取更多信息。异常消息说明categories[0] is not an integer
之类的内容所以我尝试了一个整数列表。然后,它的工作原理。但只分配了一个类别,只列出了列表中的最后一个类别。
那么,如何在帖子中添加更多类别?
N1:我的wordpress安装中实际存在ID为13
和16
的类别。
N2:我知道我可以创建草稿,然后创建新的请求以创建类别,然后使用更新帖子端点为帖子分配类别......但理论上应该是可能的传递多个类别只是创建帖子,因为它在参考xd
中N3:我不关心安全问题。这不是必要条件。
import base64
import requests
r = requests.session()
wp_host = 'wphost.dev'
wp_username = 'FIXME'
wp_password = 'FIXME'
# BUILD BASIC AUTH STRING
basic_auth = str(
base64.b64encode('{user}:{passwd}'.format(
user=wp_username,
passwd=wp_password
).encode()
), 'utf-8')
# PARAMETERS TO POST REQUEST
p = {
'url': 'http://{wp_host}/wp-json/wp/v2/posts'.format(wp_host=wp_host),
'headers': {'Authorization': 'Basic {basic_auth}'.format(basic_auth=basic_auth)},
'data': {
'title': 'My title',
'content': 'My content',
'categories': [13, 16],
'status': 'publish',
},
}
# THE REQUEST ITSELF
r = r.post(url=p['url'], headers=p['headers'], data=p['data'])
# Output
print(r.content)
# ... "categories":[16],"tags":[] ...
答案 0 :(得分:1)
WP API参考具有误导性。
实际上是用逗号分隔的带有类别ID的字符串:
data: {
...
categories: "162,224"
...
}