2

现在,我可以像这样检索用户(通过 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/

4

1 回答 1

0

因此,据我所知,wp-api 目前没有任何关于元数据的实现,您无法检索元数据,也无法使用基本 api 更改它们。但是,您可以扩展 api 来实现这些功能。

我基于这篇文章对 api 的肮脏扩展:
https ://github.com/WP-API/WP-API/issues/331

如果您想对 api 进行适当的扩展,请按照他的步骤操作。一个简化版本,不可维护是在 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 请求发送的数据中使用的密钥,它将标识为您要更新的元数据。您可以为此使用任何您喜欢的名称。此键是一个对象,其中包含将传递给用户的每对键和值元数据。

这真的很脏,我强烈建议您选择上述链接实现,因为在此之后您将无法再更新 wp-api。

于 2015-04-10T21:02:07.817 回答