我正在编写一个WordPress主题,它使用以下函数将几个自定义字段添加到用户配置文件中
function add_contact_methods( $profile_fields ) {
// Add Social Media Fields
$profile_fields[\'facebook\'] = esc_html_e( \'Facebook URL\', \'jldc\' );
);
return $profile_fields;
}
add_filter( \'user_contactmethods\', \'add_contact_methods\' );
如何将其挂接到REST API(使用插件的v2-ßeta13),以便该字段的值将在服务器的JSON响应中返回?
我找到了一个关于它的教程,最后得到了代码:
function facebook_add_user_data() {
register_api_field( \'user\',
\'facebook\',
array(
\'get_callback\' => \'facebook_get_user_field\',
\'update_callback\' => null,
\'schema\' => array(
\'description\' => \'User Facebook URL\',
\'type\' => \'string\',
\'context\' => array( \'view\' ),
),
)
);
}
add_action( \'rest_api_init\', \'facebook_add_user_data\' );
function facebook_get_user_field( $user, $field_name, $request ) {
return get_user_meta( $user->id, $field_name);
}
当我运行请求(../wp-json/wp/v2/users/2)时,字段不会出现。
你是如何把这些田里的水勾起来的?
最合适的回答,由SO网友:Cedon 整理而成
我明白了。原来我看的教程很旧,我使用了错误的WP函数。我在使用register_api_field
但正确的方法是register_rest_field
.
事情是这样的。。。
function facebook_add_user_data() {
register_rest_field( \'user\',
\'facebook\',
array(
\'get_callback\' => \'rest_get_user_field\',
\'update_callback\' => null,
\'schema\' => null,
)
);
}
add_action( \'rest_api_init\', \'facebook_add_user_data\' );
function rest_get_user_field( $user, $field_name, $request ) {
return get_user_meta( $user[ \'id\' ], $field_name, true );
}
我尝试了一下,服务器的响应包括“facebook”字段和用户档案中的URL。
此外facebook_get_user_field
函数实际上可以重用,所以我重命名了它rest_get_user_field
并用另一个字段名nad对其进行了测试,它也在响应中生成了该数据。