我正在尝试使用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"
}
...
}
我的问题是回拨邮件。我不知道如何编写它来更新
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' )
);
}
但是这不起作用。顺便说一下,我现在只测试邮递员,这就是为什么我使用静态数据,所以这里的1代表用户id。
有什么想法吗?