我正在 WordPress 上构建一个应用程序,它需要一个简单的前端表单,任何人都可以提交需要保存在数据库中的信息。我正在尝试通过 REST API 来处理这个问题。(由于应用程序的性质,提交此信息时不能进行任何页面重定向。)
我可以毫无问题地设置 REST API (v2),以便我可以提交帖子。当我登录 WordPress 时效果很好。当我在未登录 WordPress 的情况下尝试填写表单时,收到错误消息。
加载资源失败:服务器响应状态为 403(禁止)
如何设置 API 以接收来自任何未经身份验证的人的 POST?
这是我的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' );
有谁知道如何做到这一点?
谢谢!