wp-api :如何更新用户元数据?
wp-api : How can I update user meta?
现在,我可以像这样检索用户(通过 Angularjs 和 angular-wp-api):
[这里的一切都是用咖啡写的]
req=
method: 'GET'
url: wpAPIData.base + "/users/me"
headers:
'X-WP-Nonce': wpAPIData.nonce
$http(req).success($scope.getData)
我还可以用这个更新任何用户的简单属性:
req=
method: 'POST'
url: wpAPIData.base + "/users/1"
headers:
'X-WP-Nonce': wpAPIData.nonce
data:
lastname: 'new name'
$http(req).success($scope.checkData)
问题是,我在 wp api 文档中找不到任何更新用户元数据的方法:
http://wp-api.org/
因此,据我所知,目前在 wp-api 上没有任何关于元数据的实现,您无法检索元数据,也无法使用基础 api 更改它们。但是,您可以扩展 api 来实现这些功能。
我对 api 的肮脏扩展基于此 post :
https://github.com/WP-API/WP-API/issues/331
如果您想对 api 进行适当的扩展,请按照他的步骤操作。一个简化的版本,并且 NOT MAINTAINABLE 是在 class-wp-json-users.php 中添加几行,位于 "wp-content/plugins/json-rest-api/libs/"。您必须在此文件中编辑两个函数:
首先,将此添加到 prepare_user() 以检索真实的用户元数据:
$user_fields['meta'] = array(
'meta' => get_user_meta($user->ID), /* This is the added line */
'links' => array(
'self' => json_url( '/users/' . $user->ID ),
'archives' => json_url( '/users/' . $user->ID . '/posts' ),
),
);
为你塞满了很多无用信息,无用信息任你整理。
其次,将此添加到函数第一部分的 edit_user()(您也可以将类似的行添加到 create_user 如果您需要初始元数据):
if(isset($data['metaupdate'])){
foreach($data['metaupdate']as $k => $v){
update_user_meta($user->ID,$k,$v);
}
}
此处 'metaupdate' 是您的 PUT 请求发送的数据中使用的密钥,它将标识为您要更新的元数据。您可以为此使用您喜欢的任何名称。此键是一个包含将传递给用户的每对键和值元数据的对象。
这真的很脏,我强烈建议您选择上述 link 实施,因为在此之后您将无法再更新 wp-api。
现在,我可以像这样检索用户(通过 Angularjs 和 angular-wp-api): [这里的一切都是用咖啡写的]
req=
method: 'GET'
url: wpAPIData.base + "/users/me"
headers:
'X-WP-Nonce': wpAPIData.nonce
$http(req).success($scope.getData)
我还可以用这个更新任何用户的简单属性:
req=
method: 'POST'
url: wpAPIData.base + "/users/1"
headers:
'X-WP-Nonce': wpAPIData.nonce
data:
lastname: 'new name'
$http(req).success($scope.checkData)
问题是,我在 wp api 文档中找不到任何更新用户元数据的方法: http://wp-api.org/
因此,据我所知,目前在 wp-api 上没有任何关于元数据的实现,您无法检索元数据,也无法使用基础 api 更改它们。但是,您可以扩展 api 来实现这些功能。
我对 api 的肮脏扩展基于此 post :
https://github.com/WP-API/WP-API/issues/331
如果您想对 api 进行适当的扩展,请按照他的步骤操作。一个简化的版本,并且 NOT MAINTAINABLE 是在 class-wp-json-users.php 中添加几行,位于 "wp-content/plugins/json-rest-api/libs/"。您必须在此文件中编辑两个函数:
首先,将此添加到 prepare_user() 以检索真实的用户元数据:
$user_fields['meta'] = array( 'meta' => get_user_meta($user->ID), /* This is the added line */ 'links' => array( 'self' => json_url( '/users/' . $user->ID ), 'archives' => json_url( '/users/' . $user->ID . '/posts' ), ), );
为你塞满了很多无用信息,无用信息任你整理。
其次,将此添加到函数第一部分的 edit_user()(您也可以将类似的行添加到 create_user 如果您需要初始元数据):
if(isset($data['metaupdate'])){ foreach($data['metaupdate']as $k => $v){ update_user_meta($user->ID,$k,$v); } }
此处 'metaupdate' 是您的 PUT 请求发送的数据中使用的密钥,它将标识为您要更新的元数据。您可以为此使用您喜欢的任何名称。此键是一个包含将传递给用户的每对键和值元数据的对象。
这真的很脏,我强烈建议您选择上述 link 实施,因为在此之后您将无法再更新 wp-api。