2017-11-02 9 views
1

単一のユーザーのメタ値を編集するカスタムルートを作成しました。コードは次のとおりです。POSTでREST APIが不要な認証

add_action('rest_api_init', function() { 
    register_rest_route('custom', '/activating/(?P<id>\d+)', array(
     'methods' => 'POST', 
     'callback' => __NAMESPACE__ . '\\activate_user', 
     'args' => array(
      'id' => array(
       'validate_callback' => function($param, $request, $key) { 
        return is_numeric($param); 
       } 
      ), 
     ), 
    )); 
}); 

function activate_user($data){ 
    $user_id = $data['id']; 
    update_user_meta($user_id, "user_active", 1, 0); 
    return array('message' => 'OK'); 
} 

これを郵便番号でテストします.WPは必須ではありません。これは正常です?認証でのみPOST要求を許可するには何が必要ですか?

答えて

1

ユーザーを認証するには、permission_callback引数を使用する必要があります。

add_action('rest_api_init', function() { 
    register_rest_route('custom', '/activating/(?P<id>\d+)', array(
     'methods' => 'POST', 
     'callback' => __NAMESPACE__ . '\\activate_user', 
     'permission_callback' => 'is_user_logged_in', 
     'args' => array(
      'id' => array(
       'validate_callback' => function($param, $request, $key) { 
        return is_numeric($param); 
       } 
      ), 
     ), 
    )); 
}); 

あなたがここに見ることができるように、私は、ユーザーがたりないログインしている場合だけ真または偽の基本(ブール値)を行いますis_user_logged_in機能に渡されました。機能をチェックし、ナンスを確認することで(ノンスがヘッダーに渡された場合)、さらにそれを取ることができます。

Source