Я ищу способ разрешить создание гостевых постов на моем веб-сайте без необходимости входа пользователей. Я бы предпочел сделать это безопасным способом, без плагинов, если это возможно.
Я пытался использовать WP Rest API для создания публикации с помощью формы на веб-сайте, используя одноразовый номер для аутентификации. Тем не менее, я получил 401 несанкционированную ошибку при создании этого как не вошедшего в систему пользователя.
Провел некоторые исследования, и кажется, что API REST можно использовать для создания сообщений, когда пользователь не вошел в систему.
Я встречал упоминания о wp_ajax_nopriv_ (action), но я не смог найти ни одной недавней документации, которая казалась надежной.
Это самая надежная документация, которую я нашел, и она немного устарела.
WordPress REST API - Разрешить кому-либо POST
и
https://www.justinsilver.com/technology/wordpress/creating-ajax-functions-in-wordpress/
Я включаю свой код ниже.
createStory() {
var newStory = {
'title': $("#title").val(),
'content': $("#description").val(),
'excerpt': $("#excerpt").val(),
'name': $("#name").val(),
'location': $("#location").val(),
'status': 'draft' //needed to publish the post, otherwise it is saved as a draft
};
$.ajax({
beforeSend: (xhr) => {
xhr.setRequestHeader('X-WP-Nonce', siteData.nonce);
},
url: siteData.root_url + '/wp-json/wp/v2/helpers-story/',
type: 'POST',
data: newStory,
success: (response) => {
console.log("New post created");
console.log(response);
},
error: (response) => {
console.log("Post creation failed");
console.log(response);
}
})
return false;
}
Это часть ответа, который я получил.
responseJSON: {code: "rest_cannot_create", message: "Sorry, you are not allowed to create posts as this user.", data: {…}}
responseText: "{"code":"rest_cannot_create","message":"Sorry, you are not allowed to create posts as this user.","data":{"status":401}}