我正在尝试添加一个自定义可更新字段,以显示在用户rest api中。
我设法在GET请求上正确显示了该字段,但在POST请求上没有使用新值进行更新。
这是我在functions.php上的代码:
function slug_add_post_data() {
register_rest_field('user',
'ubicaciones',
array(
'get_callback' => 'slug_get_field',
'update_callback' => 'slug_update_field',
'schema' => array(
'description' => 'Ubicaciones usuario',
'type' => 'string',
'context' => array('view', 'edit')
)
)
);
}
add_action('rest_api_init', 'slug_add_post_data');
function slug_get_field($user, $field_name, $request) {
return get_user_meta($user->id, $field_name);
}
function slug_update_field($value, $user, $field_name) {
if (!$value || !is_string($value)) {
return;
}
return update_user_meta($user->ID, $field_name, strip_tags($value));
}
update_callback函数一定有问题,但是我找不到确切的位置。
知道我在做什么错吗?
谢谢。
我设法使它起作用。这篇文章对我有帮助:https://wordpress.stackexchange.com/questions/293025/curl-post-work-with-user-meta-but-not-the-custom-user-meta
add_action("rest_api_init", function () {
register_rest_field(
"user"
, "ubicaciones"
,
[
"get_callback" => function ($user, $field_name, $request, $object_type) {
return get_user_meta($user["id"], $field_name, TRUE);
},
"update_callback" => function ($value, $user, $field_name, $request, $object_type) {
update_user_meta($user->ID, $field_name, $value);
},
]
);
});