Заполните поля ACF с помощью Wordpress Rest API JS - PullRequest
0 голосов
/ 12 июня 2019

Я недавно работаю с WordPress и играю с плагином Advanced Custom Fields.Это кажется хорошим, но я хотел бы знать, возможно ли POST новый объект (созданный с помощью ACF) через WordPress REST API?Я уже использую его для 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 Ответ

0 голосов
/ 12 июня 2019

Как и запрос GET, вы также можете использовать запрос POST для сохранения данных в CMS.Что вам нужно сделать, это передать заголовки авторизации с помощью вызова API POST.
Подробнее о механизме авторизации вы можете узнать здесь: https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/

Заголовки:

Authorization:Bearer <token>
Content-Type:application/json

Во-вторых, вы можете передать Body данные в формате RAW, как показано ниже:

{
"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
            ]
    }
}

Пожалуйста, дайте мне знать, если потребуется какая-либо помощь.

Спасибо

...