Я создаю приложение на WordPress, для которого требуется простая форма интерфейса, где каждый может отправлять информацию, которая должна быть сохранена в базе данных. Я пытаюсь справиться с этим через REST API. (Из-за характера приложения не может быть перенаправления страницы при отправке этой информации.)WordPress REST API - разрешить кому-либо POST
У меня нет проблем с настройкой API REST (v2), чтобы я мог отправить сообщение. Он отлично работает, когда я вошел в WordPress. Когда я пытаюсь заполнить форму, когда я не вошел в WordPress, я получаю сообщение об ошибке.
Не удалось загрузить ресурс: сервер ответил со статусом 403 (Forbidden)
Как я могу установить API, чтобы получить сообщение от любого, без проверки подлинности?
Вот мой JavaScript:
$('#post-submission-form').on('submit', function(e) {
e.preventDefault();
var title = $('#post-submission-title').val();
var excerpt = $('#post-submission-excerpt').val();
var content = $('#post-submission-content').val();
var status = 'draft';
var data = {
title: title,
excerpt: excerpt,
content: content
};
$.ajax({
method: "POST",
url: POST_SUBMITTER.root + 'wp/v2/posts',
data: data,
beforeSend: function (xhr) {
//xhr.setRequestHeader('X-WP-Nonce', POST_SUBMITTER.nonce);
},
success : function(response) {
console.log(response);
alert(POST_SUBMITTER.success);
},
fail : function(response) {
console.log(response);
alert(POST_SUBMITTER.failure);
}
});
});
Вот как я инициализация моего JavaScript:
function holiday_scripts() {
// Onload JS
wp_enqueue_script('holiday-js', get_template_directory_uri() . '/js/holiday.js', array(), false, true);
//localize data for script
wp_localize_script('holiday-js', 'POST_SUBMITTER', array(
'root' => esc_url_raw(rest_url()),
'nonce' => wp_create_nonce('wp_rest'),
'success' => __('Thanks for your submission!', 'your-text-domain'),
'failure' => __('Your submission could not be processed.', 'your-text-domain'),
'current_user_id' => 9
)
);
}
add_action('wp_enqueue_scripts', 'holiday_scripts');
Кто-нибудь есть какие-либо идеи о том, как это сделать?
Спасибо!
Спасибо за ответ.Я тестирую этот маршрут, но я не могу заставить часть PHP этого запускать. Я добавил аналогичную версию своей функции в мои функции.php, но кажется, что мои значения не проходят. Как анализируются данные в функции PHP? Кажется, что $ args, поскольку он передан в wp_insert_post ($ args), не является этими данными. – mbacon40
Код в моем ответе не будет запущен, просто псевдокод. «Данные» отправляются как POST, поэтому, если вы хотите получить «действие», вы будете использовать '$ _POST ['action']'. «$ Args» для вставки должен содержать некоторые требуемые значения, проверьте документы для этого метода. – doublesharp
Для совершенно другого варианта вы также можете попробовать следующее: http://www.advancedcustomfields.com/resources/using-acf_form-to-create-a-new-post/?version=4 – doublesharp