Я пытаюсь работать с Wordpress API, чтобы обновить информацию пользователя через POST-запрос.Информация хранится в пользовательском поле JSON, которое я зарегистрировал следующим образом:
public function handle_user_info() {
register_rest_field( 'user', 'personal_info', array(
'get_callback' => array( $this, 'get_user_info_callback' ),
'update_callback' => array( $this, 'post_user_info_callback' ),
'schema' => null
));
}
Вот обратный вызов GET:
public function get_user_info_callback( $user ) {
$userID = $user[ 'id' ];
return array(
'rcp_user_first' => get_user_meta( $userID, 'rcp_user_first', true ),
'rcp_user_last' => get_user_meta( $userID, 'rcp_user_last', true ),
'rcp_user_location' => get_user_meta( $userID, 'rcp_user_location', true ),
'rcp_postal_address' => get_user_meta( $userID, 'rcp_postal_address', true ),
'rcp_email' => get_userdata( $userID )->user_login
);
}
Все вышеперечисленное работает нормально.Когда я делаю запрос GET, вот что возвращается (сокращенная версия):
{
"id": 1,
"name": "John",
"url": "http://example.com",
"description": "",
"slug": "admin",
...
"personal_info": {
"rcp_user_first": "John",
"rcp_user_last": "Doe",
"rcp_user_location": "EU",
"rcp_postal_address": "101 Fake Street",
"rcp_email": "admin@example.com"
}
...
}
Моя проблема с обратным вызовом POST.Я не могу понять, как написать его, чтобы обновить значения в поле personal_info
.Я предположил, что что-то вроде этого будет работать:
public function post_user_info_callback( $value, $user, $fieldName ) {
return array(
'rcp_user_first' => update_user_meta( 1, 'rcp_user_first', 'Mark' ),
'rcp_user_last' => update_user_meta( 1, 'rcp_user_last', 'Smith' ),
'rcp_user_location' => update_user_meta( 1, 'rcp_user_location', 'NON_EU' ),
'rcp_postal_address' => update_user_meta( 1, 'rcp_postal_address', '202 Fantasy Street' )
);
}
Однако это не работает.Кстати, сейчас я тестирую только с Postman, поэтому я использую статические данные, поэтому здесь 1 обозначает идентификатор пользователя.
Есть идеи?