使用 WP REST API 创建一个新用户并声明元对象
Create a new user using WP REST API and declare meta object
我在这里遇到一个问题。我正在用这个 JSON
数据发送一个 POST
到 http://localhost/wp-json/v2/wp/users/
:
{
"username" : "johndoe",
"email": "jondoe@gmail.com",
"password": "qwerty",
"meta": {
"icq": "11223344"
}
}
但是我去看结果的时候,meta
对象是空白的。我使用插件实现了目标,但是这个插件使用 cookie
进行身份验证,我还有另一个使用 JWT
进行身份验证的插件,所以我认为一个插件太多了单个任务。
有人遇到同样的问题吗?甚至在插件的官方文档中我也没有找到解决方案。
刚刚在Stack Overflow的另一个问题中找到了解决方案。使用函数 register_meta()
:
register_meta('user', 'icq', array(
"type" => "string",
"show_in_rest" => true
));
现在我可以使用以下方式发出请求:
{
"username" : "johndoe",
"email": "jondoe@gmail.com",
"password": "qwerty",
"meta": {
"icq": "11223344"
}
}
响应是:
{
"id": 49,
"username": "johndoe",
"name": "johndoe",
"first_name": "",
"last_name": "",
"email": "johndoe@gmail.com",
"url": "",
"description": "",
"link": "http://localhost/author/johndoe/",
"locale": "en_US",
"nickname": "johndoe",
"slug": "johndoe",
"roles": [
"subscriber"
],
"registered_date": "2018-01-13T11:53:57+00:00",
"capabilities": {
"read": true,
"level_0": true,
"subscriber": true
},
"extra_capabilities": {
"subscriber": true
},
"avatar_urls": {
"24": "http://2.gravatar.com/avatar/29a1df4646cb3417c19994a59a3e022a?s=24&d=mm&r=g",
"48": "http://2.gravatar.com/avatar/29a1df4646cb3417c19994a59a3e022a?s=48&d=mm&r=g",
"96": "http://2.gravatar.com/avatar/29a1df4646cb3417c19994a59a3e022a?s=96&d=mm&r=g"
},
"meta": {
"icq": [
"11223344"
]
},
"_links": {
"self": [
{
"href": "http://localhost/wp-json/wp/v2/users/49"
}
],
"collection": [
{
"href": "http://localhost/wp-json/wp/v2/users"
}
]
}
}
如果我想在 /wp-admin/
中 show/edit 我也只使用这个函数:
function more_contactmethods( $contactmethods ) {
$contactmethods['icq'] = 'ICQ';
return $contactmethods;
}
add_filter( 'user_contactmethods', 'more_contactmethods' );
我在这里遇到一个问题。我正在用这个 JSON
数据发送一个 POST
到 http://localhost/wp-json/v2/wp/users/
:
{
"username" : "johndoe",
"email": "jondoe@gmail.com",
"password": "qwerty",
"meta": {
"icq": "11223344"
}
}
但是我去看结果的时候,meta
对象是空白的。我使用插件实现了目标,但是这个插件使用 cookie
进行身份验证,我还有另一个使用 JWT
进行身份验证的插件,所以我认为一个插件太多了单个任务。
有人遇到同样的问题吗?甚至在插件的官方文档中我也没有找到解决方案。
刚刚在Stack Overflow的另一个问题中找到了解决方案。使用函数 register_meta()
:
register_meta('user', 'icq', array(
"type" => "string",
"show_in_rest" => true
));
现在我可以使用以下方式发出请求:
{
"username" : "johndoe",
"email": "jondoe@gmail.com",
"password": "qwerty",
"meta": {
"icq": "11223344"
}
}
响应是:
{
"id": 49,
"username": "johndoe",
"name": "johndoe",
"first_name": "",
"last_name": "",
"email": "johndoe@gmail.com",
"url": "",
"description": "",
"link": "http://localhost/author/johndoe/",
"locale": "en_US",
"nickname": "johndoe",
"slug": "johndoe",
"roles": [
"subscriber"
],
"registered_date": "2018-01-13T11:53:57+00:00",
"capabilities": {
"read": true,
"level_0": true,
"subscriber": true
},
"extra_capabilities": {
"subscriber": true
},
"avatar_urls": {
"24": "http://2.gravatar.com/avatar/29a1df4646cb3417c19994a59a3e022a?s=24&d=mm&r=g",
"48": "http://2.gravatar.com/avatar/29a1df4646cb3417c19994a59a3e022a?s=48&d=mm&r=g",
"96": "http://2.gravatar.com/avatar/29a1df4646cb3417c19994a59a3e022a?s=96&d=mm&r=g"
},
"meta": {
"icq": [
"11223344"
]
},
"_links": {
"self": [
{
"href": "http://localhost/wp-json/wp/v2/users/49"
}
],
"collection": [
{
"href": "http://localhost/wp-json/wp/v2/users"
}
]
}
}
如果我想在 /wp-admin/
中 show/edit 我也只使用这个函数:
function more_contactmethods( $contactmethods ) {
$contactmethods['icq'] = 'ICQ';
return $contactmethods;
}
add_filter( 'user_contactmethods', 'more_contactmethods' );