wp-api:如何更新用户元?

时间:2015-04-08 13:56:00

标签: angularjs wordpress 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)

我还可以使用以下方法更新任何用户的简单attrs:

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/

1 个答案:

答案 0 :(得分:0)

因此,据我所知,目前在wp-api上没有任何关于元数据的实现,你无法检索元数据,也无法使用基本API进行更改。但是,您可以扩展api以实现此类功能。

我根据这篇文章对api进行了粗略的扩展:
https://github.com/WP-API/WP-API/issues/331

如果你想对api进行适当的扩展,请按照他的步骤进行操作。简化版本和NOT MAINTAINABLE是在类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。