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 を適切に拡張したい場合は、彼の手順に従ってください。簡略化されたバージョンであり、メンテナンス不可であることは、「wp-content/plugins/json-rest-api/libs/」にある class-wp-json-users.php に数行を追加することです。このファイルで 2 つの関数を編集する必要があります。

  • 最初に、これを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 に答える