2017-11-02 2 views
1

단일 사용자 메타 값을 편집하는 사용자 지정 경로를 만들었습니다. 코드는 다음과 같습니다.POST에서 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 기능에 통과했다. 기능을 확인하고 비표가 확인되면 (헤더에 nonce가 전달 된 경우) 더 이상 취할 수 있습니다.

Source

관련 문제