检索REST API不起作用的所有用户

时间:2021-09-30 作者:A.M.P.

目前,我正在使用Postman访问端点,我已经成功地进行了基本身份验证,但到目前为止,我无法获得所有注册用户。我的请求:

https://example.com/wp-json/wp/v2/users
仅返回有帖子的用户,即使我插入了:

add_filter( \'rest_user_query\' , \'custom_rest_user_query\' );
function custom_rest_user_query( $prepared_args, $request = null ) {
  unset($prepared_args[\'has_published_posts\']);

  return $prepared_args;
}
在我的函数文件中。我还尝试应用过滤器:

https://example.com/wp-json/wp/v2/users?filter[per_page]=0
但我还是得到了同样的结果:只有有帖子的用户。几天来我一直在头痛。。。

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

The problem may be pagination

API每页只返回10个结果,需要后续请求才能获取其余结果。WP包含一个HTTP标头,它告诉您总结果数和页数。它有一个硬限制,每页最多100个,如果你要求200个,你将被限制为100个。

因此,您丢失的用户可能在第2页或第3页等

我强烈建议您阅读官方开发人员网站上的REST API手册,以下是详细分页的页面:

https://developer.wordpress.org/rest-api/using-the-rest-api/pagination/

SO网友:billybadass

WP有很好的内置工具可用于db,我的建议是注册端点并用于回调函数,如下所示:

function getAllUsers(){
    global $wpdb;
    $query = $wpdb->get_results( " SELECT `ID` FROM `wp_users` " , OBJECT);
    $ids = array();
    foreach($query as $id){
        array_push($ids, $id->ID);
    }
    return $ids;    
}
它将返回所有ID。然后您可以使用get_post_meta 收集有关用户的元信息。当然,考虑保护您的端点,因为它会移交用户信息。