使用 Wordpress Rest API JS 填充 ACF 字段
Populate ACF Fields using Wordpress Rest API JS
我是 WordPress
的新手,正在使用 Advanced Custom Fields
插件。看起来不错,但我想知道是否可以通过 WordPress REST API
POST
一个新对象(使用 ACF
创建)?我已经将它用于 GET
我所有的自定义对象(感谢 ACF to REST API Plugin
)。
我使用 WordPress
作为后端,NextJS
作为前端,所以我想创建一个新的 HTML 表单,用户可以在其中输入一些信息和直接创建该对象的实例。
如果不可能,保存到数据库(普通MySQL实例)并模拟我需要的相同操作的机制是什么?我想阻止通过一些自定义实现,如果它还存在的话(如果您需要有关问题或数据的更多信息,请告诉我)
编辑:
经过一些研究,我发现我试图使用不正确的端点创建对象。
现在我可以创建自己的对象(自定义 post 类型)但我无法填充 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
}
}
有什么办法一次性搞定吗?我应该创建对象然后发送额外信息吗?
与 GET 请求一样,您也可以使用 POST 请求将数据存储到 CMS 中。您需要做的是通过 POST API 调用传递授权 headers。
您可以在此处获得有关授权机制的更多详细信息:https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/
Headers:
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
]
}
}
如果需要任何帮助,请告诉我。
谢谢
TL;DR - ACF 现在支持 WP REST API
大家好,这里是高级自定义字段产品经理 Iain
作为 ACF 5.11 release we added native support for ACF fields in the WordPress REST API. Read more about that here 的一部分。
我是 WordPress
的新手,正在使用 Advanced Custom Fields
插件。看起来不错,但我想知道是否可以通过 WordPress REST API
POST
一个新对象(使用 ACF
创建)?我已经将它用于 GET
我所有的自定义对象(感谢 ACF to REST API Plugin
)。
我使用 WordPress
作为后端,NextJS
作为前端,所以我想创建一个新的 HTML 表单,用户可以在其中输入一些信息和直接创建该对象的实例。
如果不可能,保存到数据库(普通MySQL实例)并模拟我需要的相同操作的机制是什么?我想阻止通过一些自定义实现,如果它还存在的话(如果您需要有关问题或数据的更多信息,请告诉我)
编辑:
经过一些研究,我发现我试图使用不正确的端点创建对象。
现在我可以创建自己的对象(自定义 post 类型)但我无法填充 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
}
}
有什么办法一次性搞定吗?我应该创建对象然后发送额外信息吗?
与 GET 请求一样,您也可以使用 POST 请求将数据存储到 CMS 中。您需要做的是通过 POST API 调用传递授权 headers。
您可以在此处获得有关授权机制的更多详细信息:https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/
Headers:
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
]
}
}
如果需要任何帮助,请告诉我。
谢谢
TL;DR - ACF 现在支持 WP REST API
大家好,这里是高级自定义字段产品经理 Iain
作为 ACF 5.11 release we added native support for ACF fields in the WordPress REST API. Read more about that here 的一部分。