我在Express服务器上创建服务器端React应用程序。该应用程序将是使用Wordpress作为后端的网站的前端。前端通过Wordpress REST API提取和发布内容。
我在将用户信息存储为对象时无法更新。这是我在提交用户个人资料表单时发出的POST请求:
export const updateUserInfo = () => async ( dispatch, getState, api ) => {
const postUserInfo = {
"personal_info": {
"firstname": "John",
"lastname": "Doe"
}
}
await api.post( '/wp-json/wp/v2/users/1', postUserInfo, requestAuth );
}
从检查器我可以看到请求成功(200代码)并且有效负载是正确的,但是数据库中用户的名字和姓氏没有更新。
如果我尝试发布一个简单的键值对而不是一个对象,那么数据库就会更新:
// This works!
export const updateUserInfo = () => async ( dispatch, getState, api ) => {
const postUserInfo = {
"slug": "john-doe"
}
await api.post( '/wp-json/wp/v2/users/1', postUserInfo, requestAuth );
}
以下是我如何注册personal_info
字段:
public function get_user_personal_info() {
register_rest_field( 'user', 'personal_info', array(
'get_callback' => array( $this, 'get_user_personal_info_callback' ),
'update_callback' => null,
'schema' => null
));
}
public function get_user_personal_info_callback( $user ) {
$userID = $user[ 'id' ];
$getFirstName = get_user_meta( $userID, 'rcp_user_first', true );
$firstName = ( $getFirstName ) ? $getFirstName : null;
$getLastName = get_user_meta( $userID, 'rcp_user_last', true );
$lastName = ( $getLastName ) ? $getLastName : null;
return array(
'firstname' => $firstName,
'lastname' => $lastName,
);
}