我正在尝试设置一个自定义端点,它只返回一些用户数据,而不是用户端点返回的默认数据。但是我不知道如何从WP\\u user\\u查询中获取用户的名字和姓氏
add_action( \'rest_api_init\', function () {
register_rest_route( \'myplugin/v1\', \'some-endpoint\', array(
\'methods\' => \'GET\',
\'callback\' => \'my_awesome_func\',
) );
} );
function my_awesome_func( $request) {
$user_fields = array( \'user_nicename\', \'user_url\', \'first_name\' );
$wp_user_query = new WP_User_Query( array( \'role\' => \'subscriber\', \'fields\' => $user_fields ) );
$members = $wp_user_query->get_results();
return new WP_REST_Response(
array(
\'status\' => 200,
\'response\' => $members
)
);
return $response;
}
如果我从数组中删除“first\\u name”,那么我会在所有用户的响应中返回user\\u nicename和user\\u url。但在first\\u name出现的情况下,我只得到了一个空的响应。我也试过了
firstname
而不是
first_name
但仍然没有快乐。
而且,这只返回少数用户。如何显示全部或10、20、30等。
最合适的回答,由SO网友:Sally CJ 整理而成
如果你看看documentation, first_name
不在的可接受值列表中fields
参数,如果启用debugging, 您将看到添加first_name
该参数实际上会导致数据库错误-Unknown column \'wp_users.first_name\' in \'field list\'
. 这同样适用于;“名字”;以及任何其他非标准值。
正如文件中所说的那样,“您必须创建第二个查询以按ID获取用户元字段,或者使用__get
PHP magic方法来获取这些字段的值“;,您需要手动添加first_name
项目到您的$members
类似这样的阵列:
// &$member means we\'re modifying the original $members array
foreach ( $members as &$member ) {
$member->first_name = get_user_meta( $member->ID, \'first_name\', true );
}
但要确保
ID
在字段列表中,例如。
$user_fields = array( \'user_nicename\', \'user_url\', \'ID\' );
.
至于控制结果数量,请检查pagination parameters 喜欢number
:
// Get at most 10 users (per page).
$user_query = new WP_User_Query( array( \'number\' => 10 ) );
顺便说一句,记住设置
permission_callback
用于自定义REST API端点。