我在中创建了一个带有多个自定义REST端点的插件。但是,我无法获得工作的权限回调。当前用户始终为“0”。我正在使用本地化脚本发送nonce。
wp_localize_script( $this->cloud_base, \'POST_SUBMITTER\', array(
\'root\' => esc_url_raw( rest_url() ),
\'nonce\' => wp_create_nonce( \'wp_rest\' ),
\'success\' => __( \'Data Has been updated!\', \'your-text-domain\' ),
\'failure\' => __( \'Your submission could not be processed.\', \'your-text-domain\' ),
\'current_user_id\' => get_current_user_id()
)
);
然后在javascript代码中,我修改了sync函数以返回nonce:
app.Model = Backbone.Model.extend({
// over ride the sync function to include the Wordpress nonce.
sync: function( method, model, options ){
return Backbone.sync(method, this, jQuery.extend( options, {
beforeSend: function (xhr) {
alert(POST_SUBMITTER.nonce); // nonce is shown here.
xhr.setRequestHeader( \'X-WP-NONCE\', POST_SUBMITTER.nonce );
},
} ));
},
});
主干用于对来自REST端点的项目列表进行常规化,并生成用于添加或更新的表单。(如果禁用访问检查,一切正常。)
在我的访问检查中,当前用户始终为0
public function cloud_base_members_access_check(){
if ( current_user_can( \'read\' )) {
return true;
}
return new \\WP_Error( \'rest_forbidden\', esc_html__( \'Sorry, you are not authorized for that.\', \'my-text-domain\' ), array( \'status\' => 401 ) );
}
Wordpress REST手册中的接缝表明这应该是可行的。我结合了几个不同示例中的元素,试图实现这一点,但我还没有找到如何使这一切协同工作的示例。我已经试着让这项工作进行了大约一周了,现在我已经没有主意了?关于如何做到这一点,有什么建议吗?