python - 如何使用 WP REST API 将类别发布到 Wordpress?

标签 python wordpress rest wordpress-rest-api

我创建了这个小脚本来创建 wordpres 帖子,使用 Basic Auth,它可以工作。问题是当我尝试为帖子分配多个类别时。

引用相当含糊不清。它说 categories 字段必须是一个数组。但它没有指定它是否应该是 category 对象的数组,或者是否必须将这些类别的 id 传递给该字段。 https://developer.wordpress.org/rest-api/reference/posts/#schema-categories

所以我试图让它失败,这样我就可以从异常消息中获取更多信息。异常消息说类似 categories[0] is not an integer 所以我尝试了一个整数列表。然后,它起作用了。但是只分配了一个类别,只分配了列表中的最后一个类别。

那么,如何向帖子添加更多类别?

N1:ID 为 1316 的类别实际上存在于我的 wordpress 安装中。

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":[] ...

最佳答案

WP API 引用具有误导性。

实际上应该是逗号分隔的带有类别 ID 的字符串:

data: {
    ...
    categories: "162,224"
    ...
}

关于python - 如何使用 WP REST API 将类别发布到 Wordpress?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43677715/

相关文章:

python - 如何将字符串转换为日期时间,忽略时间信息?

python - 尽管有新版本,Anaconda 不会更新 spyder

用于小 Action 的 HTTP 方法,例如(向上)投票

python - 当多个 worker 完成未知尺寸的工作时如何收到通知?

wordpress - 如何将img url中的http转为https

WordPress:自定义个人资料表单在 Ultimate 成员(member)插件中不起作用

php - MySQL 查询获取 post_id 和特征图片 URL

java - 如何从 HttpServerExchange 获取请求正文?

c# - ServiceStack REST 服务中的自定义异常处理

python - 循环遍历 Excel 文件,查找某些单元格值并写入文本文件