从自定义终结点获取用户名字

时间:2021-04-19 作者:user8463989

我正在尝试设置一个自定义端点,它只返回一些用户数据,而不是用户端点返回的默认数据。但是我不知道如何从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等。

1 个回复
最合适的回答,由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端点。

相关推荐

将数组作为元值的GET_USERS

我的WordPress用户有一个自定义的生日元密钥(DD/MM/AAAA,例如2020年2月25日)。如果我想让所有用户今天(2002年2月25日)出生,我可以使用:$todays_birthday=\'25/02/\'; get_users(array(\'meta_compare\'=>\'like\', \'meta_key\'=>\'birthday\', \'meta_value\'=>$todays_birthday)); 它工作完美,返回所有今天出生的用户