通过REST API更新自定义WordPress用户元字段

时间:2019-05-17 作者:Tom

我为一个名为phone_number 通过add_user_meta() 作用

当我使用get_user_meta 函数,我可以看到元字段的空字符串,这是我所期望的。

但是,当我通过REST API(例如/wp-json/wp/v2/users/8)访问用户的端点时,有一个空的元数组,为什么?

如何更新phone_number 我之前通过REST API创建的空元字段?

1 个回复
SO网友:Jesús Franco

我希望能帮你找到正确的方向。欢迎来到社区,不要忘记用您尝试过的代码更新您的问题,以便为社区提供更多示例。

让我们开始讨论这个问题。

首先,通过add_user_meta 作用保存数据是正确的,但是add_user_meta does not exposes the field itself in the REST API. 你需要register 首先将该字段输入API,针对用户类型:

add_action(\'rest_api_init\', function() {
    register_rest_field( \'user\', \'phone_number\', [
        \'get_callback\'    => \'get_user_phone_number\',
        \'update_callback\' => \'update_user_phone_number\',
        \'schema\'          => [
                                \'type\'        => \'string\',
                                \'description\' => \'The phone number ...\',
                                \'context\'     => [ \'view\', \'edit\' ],
                             ],
    ]);
});

function get_user_phone_number( $user, $field_name, $request ) { 
    return get_user_meta( $user[ \'id\' ], $field_name, true );
}

function update_user_phone_number( $user, $meta_value ) { 
    update_user_meta( $user[ \'id\' ], \'phone_number\', $meta_value );
}
schema 参数经常被忽略,它为基本类型的字段提供了很多验证,您甚至可以创建自己的验证函数以避免无效信息,但对于很多事情,在模式中使用正确类型的字段将对您有很大帮助。