wordpress python rest api_如何使用WP-restapi将分类发布到Wordpress?

本文介绍了一种使用Python和WordPress REST API创建文章并为其分配多个类别的方法。作者遇到一个问题,即只能分配列表中的最后一个类别,而无法同时添加多个。解决方案和相关代码示例在内容中详细说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我用basicauth创建了这个小脚本来创建wordpres帖子,它很有用。问题是当我试图为一篇文章分配多个类别时。在

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

那么,我如何在一篇文章中添加更多的类别呢?在

N1:id为13和{}的类别实际上存在于我的wordpress安装中。在

N2:我知道我可以创建一个草稿,然后创建新的请求来创建类别,然后使用update post端点将类别分配给post。。。但理论上,应该可以通过多个类别来创建post,因为它在引用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":[] ...

### WordPress REST API使用教程与常见问题解决 #### 什么是 WordPress REST APIWordPress REST API 是一种基于 HTTP 协议的标准接口,它允许开发者通过 URL 请求来读取和修改 WordPress 数据库中的内容。这使得与其他应用程序集成变得更加容易,比如开发移动应用或前端框架驱动的应用程序。 这种功能的核心在于提供了一组标准化的端点 (Endpoints),可以用来获取文章、页面、用户以及其他资源的信息[^3]。 --- #### 如何启用 WordPress REST API? 默认情况下,WordPress 自带了 REST API 功能,在大多数安装环境中无需额外配置即可直接使用。然而如果遇到无法访问的情况,则可能需要检查以下几个方面: 1. **服务器设置** 确认 Web 服务器支持并启用了 `mod_rewrite` 模块(对于 Apache),或者 Nginx 配置文件中有正确的重写规则。缺少这些可能导致 `/wp-json/...` 路径不可用[^4]。 2. **插件冲突** 如果某些安全插件禁用了 JSON 接口,请尝试停用所有第三方插件后再测试连接情况。必要时可手动安装官方 WP REST API 插件作为补充解决方案[^2]。 3. **主题模板干扰** 主题函数中可能存在阻止外部请求的操作代码片段;建议切换至默认 Twentyxx 系列主题验证是否存在此类影响因素。 --- #### 获取数据示例 以下是几个基本 GET 方法调用的例子以及返回结果结构说明: - **获取所有文章** ```bash https://example.com/wp-json/wp/v2/posts ``` 此链接会列出站点上的每篇文章摘要信息,包括 ID, title, content 等字段。 - **检索特定类别下的条目** ```bash https://example.com/wp-json/wp/v2/posts?categories=10 ``` 这里假设分类ID为10,实际数值需依据各自博客设定调整。 - **查看单篇详情** ```bash https://example.com/wp-json/wp/v2/posts/{id} ``` 替换 `{id}` 参数值便可加载对应的文章全文本体。 上述路径均遵循统一模式即前缀部分固定不变(`wp-json`)后面跟随版本号(v2)再加上目标实体名称(posts/pages/users...)形成最终URL地址。 --- #### 发送 POST/PATCH/DELETE 请求 除了简单的查询之外,还可以借助工具像 Postman 或者编写脚本来实现更复杂的交互动作,例如新增草稿、更新现有记录甚至彻底删除对象实例等行为都需要附带上认证令牌以证明身份合法性。 下面给出 Python 示例演示如何创建新帖子: ```python import requests from requests.auth import HTTPBasicAuth url = 'https://yourdomain.com/wp-json/wp/v2/posts' data = { 'title': 'Test Title', 'content': 'This is a test post created via the REST API.', 'status': 'publish' # Options: publish | future | draft | pending | private } response = requests.post(url, json=data, auth=HTTPBasicAuth('username', 'password')) print(response.json()) ``` 注意替换掉变量 username 和 password 并确保账户拥有足够的权限执行该类操作。 --- #### 常见错误排查指南 当发现 REST API 不起作用的时候可以从这几个角度入手分析原因所在: 1. **确认 Permalink 设置无误**: 访问后台管理面板 -> 设置 -> 固定链接 页面重新保存一次当前选项组合。 2. **审查 .htaccess 文件内容**: 对于采用 mod_rewrite 技术处理动态路由解析的服务器环境来说此步尤为关键。 3. **排除防火墙拦截可能性**: 查看是否有软件层面的安全策略阻挡未授权来源发起的网络通信活动。 4. **查阅日志文档寻找线索**: 利用 error_log 输出调试期间产生的异常提示进而定位根本症结所在位置。 以上措施结合起来往往能够有效缓解大部分棘手状况的发生概率[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值