使用 Wordpress Rest API JS 填充 ACF 字段
Posted
技术标签:
【中文标题】使用 Wordpress Rest API JS 填充 ACF 字段【英文标题】:Populate ACF Fields using Wordpress Rest API JS 【发布时间】:2019-10-26 10:19:27 【问题描述】:我是 WordPress
的新手,我正在玩 Advanced Custom Fields
插件。看起来不错,但我想知道是否可以通过WordPress REST API
POST
一个新对象(使用ACF
创建)?我已经将它用于GET
我所有的自定义对象(感谢ACF to REST API Plugin
)。
我使用WordPress
作为后端,NextJS
作为前端,所以我想创建一个新的 html 表单,用户可以在其中输入一些信息并直接创建该对象的实例。
如果不可能,保存到数据库(普通 mysql 实例)并模拟我需要的相同操作的机制是什么?如果还存在一些自定义实现,我想阻止执行一些自定义实现(如果您需要有关问题或数据的更多信息,请告诉我)
编辑:
经过一番研究,我发现我试图使用不正确的端点创建对象。
现在我可以创建自己的对象(自定义帖子类型),但我无法填充 ACF 字段...
我发送一个标准请求:
var data = JSON.stringify(
"title": "Test00",
"status": "publish",
"acf":
"customfield1":"Some value..."
);
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function ()
if (this.readyState === 4)
console.log(this.responseText);
);
xhr.open("POST", "http://localhost:8000/wp-json/wp/v2/custom");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODAwMCIsImlhdCI6MTU2MDM3NTQxNywibmJmIjoxNTYwMzc1NDE3LCJleHAiOjE1NjA5ODAyMTcsImRhdGEiOnsidXNlciI6eyJpZCI6IjIifX19.BCyrlFm_qD3-9DzCxQ37n4pJYkTasvLaN34NJtFAMC4");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
我收到了这个:
...
"acf":
"customfield1":null
有什么方法可以一次性完成吗?我应该创建对象然后发送额外的信息吗?
【问题讨论】:
【参考方案1】:与 GET 请求一样,您也可以使用 POST 请求将数据存储到 CMS 中。您需要做的是通过 POST API 调用传递授权标头。 您可以在此处获取有关授权机制的更多详细信息:https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/
标题:
Authorization:Bearer <token>
Content-Type:application/json
其次,您可以将 Body 数据作为 RAW json 传递,如下所示:
"title":"Sample ACF field demo",
"status": "publish",
"fields":
"text_custom_field_name" : "Text value",
"checkbox_custom_field_name" : [
"Option1,",
"Option2,",
"Option3"
],
"textarea_custom_field_name" : "This is message field",
"boolean_custom_field_name" : [
true
]
如果需要任何帮助,请告诉我。
谢谢
【讨论】:
谢谢!我稍后会尝试,但与此同时,只有一个问题,我计划添加 JWT 进行身份验证(我不是安全专家,但我有这方面的经验),我发现本教程要做所以 (firxworx.com/blog/wordpress/…) ,可以在没有用户登录的情况下使用它吗?例如,基于公共 HTML 表单创建一个新的自定义对象,或者有什么最好的方法吗? JWT 是一个不错的选择。有一个可用于集成 JWT 的 WP 插件:wordpress.org/plugins/jwt-authentication-for-wp-rest-api 要在没有用户登录的情况下公开使用,我建议创建一个自定义端点并写下生成 JWT 令牌的逻辑,并制作一些自定义逻辑来使用该自定义端点。这样,您的端点和令牌生成将是安全的。让我知道有什么。谢谢! 如果我 GET 到我的端点 localhost:8000/wp-json/acf/v3/custom ,它可以工作,但是当我尝试直接进行 POST 时,甚至没有添加任何授权或任何额外数据,我看到: "code": "rest_no_route" , "message": "No se encontró la ruta que coincida con la URL y el método de la petición", "data": "status": 404 我还需要设置别的吗? 谢谢!我终于能够使用自定义字段创建对象了! :D【参考方案2】:TL;DR - ACF 现在支持 WP REST API
大家好,这里是高级自定义字段的产品经理 Iain ?
作为ACF 5.11 版本的一部分,我们在 WordPress REST API 中添加了对 ACF 字段的原生支持。阅读更多关于 here 的信息。
【讨论】:
以上是关于使用 Wordpress Rest API JS 填充 ACF 字段的主要内容,如果未能解决你的问题,请参考以下文章
Wordpress 使用自定义端点 rest api 上传多个图像(离子作为最终用户)
Wordpress REST API (wp-api) 404 错误:无法访问 WordPress REST API
没有让 wordpress nonce 与 wp-rest api 应用程序一起工作