有没有办法在定制的rest API方法中识别用户?

时间:2019-04-10 作者:TTT

在自定义REST API方法中,我想识别用户(通常是get_current_user_id() 然后从数据库中检索他们的数据(比如角色和一些自定义权限)。

但到目前为止get_current_user_id() 返回0(不是当前用户ID)。

是否可以在REST API中标识用户?

否则,我看到的解决方案是使用页面作为“排序”API。。。但我认为这将是一个丑陋的解决方案。

1 个回复
SO网友:Shady Mohamed Sherif

我花了两天时间寻找一种不添加插件的简单方法。

功能第一。定义api的php

//enqueue the script which will use the api
function api_callings_scripts() {
    wp_enqueue_script(\'score-script\', get_template_directory_uri() . \'/js/ScoreSaving.js\', [\'jquery\'], NULL, TRUE);
    // Pass nonce to JS.
    wp_localize_script(\'score-script\', \'ScoreSettings\', [
      \'nonce\' => wp_create_nonce(\'wp_rest\'),
    ]);
}
add_action( \'wp_enqueue_scripts\', \'api_callings_scripts\' ); 
那么您的脚本Ajax调用云就是这样的

jQuery.ajax({
      type: "POST",
      url: "/wp-json/score/update",
      data: {"var1":"value1"},
      beforeSend: function(xhr) {
        xhr.setRequestHeader(\'X-WP-Nonce\', ScoreSettings.nonce);
      },
    success: 
        function( data ) {
          console.log( data );
        }
    });
现在您可以使用get_current_user_id() 在API代码内部。

相关推荐

WordPress REST-API将图像上传到ACF

我使用Wordpress Rest API创建了自己的API。我成功地将所有数据保存在wordpress后端,但我不知道如何获取和保存文件/图像中的数据。 register_rest_route( \'mlcs/v1\', \'/save_data\', array( \'methods\' => \'POST\', \'callback\' => array( $this, \'save_data_post\' ),