是否通过REST API更新用户元数据?

时间:2019-02-04 作者:upstation

我有一个本地应用程序项目,可以从/wp-json/wp/v2.

我用这个注册了电话

register_meta(\'user\', \'phone\', array(
    "type" => "string",
    "show_in_rest" => true
));
功能。php和我可以使用以下内容查看用户元数据

http://example.com/wp-json/wp/v2/users/1
如何在WordPress外部使用WP REST API创建/更新usermeta?

任何帮助都会很好。

谢谢

2 个回复
SO网友:ngearing

我昨天不得不这么做,我是这样做的。

就像你已经做的那样register_meta 显示在api中。

register_meta(\'user\', \'meta_key\', array(
    "type" => "string",
    "show_in_rest" => true,
    "single" => true,
));
然后,您需要使用请求主体中的元值向用户端点发出POST或PUT请求。

我使用javascript的fetch api,但您也可以使用ajax 或使用WordPresswp_remote_request() 作用

首先,我将javascript排入队列。

wp_register_script( \'theme-js\', get_theme_file_uri( \'./dist/scripts/main.js\' ), [ \'jquery\' ], \'\', true );
wp_localize_script(
    \'theme-js\',
    \'wpApiSettings\',
    array(
        \'root\'        => esc_url_raw( rest_url() ), // Rest api root
        \'nonce\'       => wp_create_nonce( \'wp_rest\' ), // For auth
        \'currentUser\' => get_current_user_id() ?: false,
    )
);
wp_enqueue_script( \'theme-js\' );
然后设置fetch函数。

const fetchApi = function(route, data, method) {
  if (!route) route = \'posts\'
  if (!method) method = \'GET\'

  return fetch(wpApiSettings.root + \'wp/v2/\' + route, {
    method,
    credentials: \'same-origin\',
    body: JSON.stringify(data),
    headers: {
      \'X-WP-Nonce\': wpApiSettings.nonce,
      \'Content-Type\': \'application/json\'
    }
  })
}
然后在需要时调用该函数。

fetchApi(
  `users/${wpApiSettings.currentUser}`,
  {
    meta: {
      meta_key: value
    }
  },
  \'POST\'
)
  .then(resp => {
    console.log(resp)
    if (resp.ok) {
      return resp.json()
    }
    return false
  })
  .then(json => console.log(json))

SO网友:adeguk Loggcity