如何通过JSON API删除WordPress用户及权限问题排查
解决方案建议
针对JSON API插件删除用户的权限错误
错误提示明确要求要么传递管理员的u(用户名)和p(密码)参数,要么以管理员身份登录请求。可以按以下方式处理:
- 验证Nonce有效性:确认请求中的
nonce是通过正确的action生成的,JSON API插件通常使用json_api作为nonce action,你可以用wp_create_nonce('json_api')生成有效nonce替换当前值。 - 安全传递管理员身份:不建议明文传递
u和p参数(存在泄露风险),建议先通过管理员账号登录站点,获取会话cookie后,在删除请求的Header中携带该cookie(比如Cookie: wordpress_logged_in_xxx=xxx),以认证管理员身份。 - 检查插件权限配置:进入JSON API插件的设置页面,确认
users/delete_user接口的权限设置为允许管理员访问,避免额外的权限限制。
针对WP REST API仅显示管理员用户的问题
默认情况下,wp-json/wp/v2/users接口只有管理员能查看所有用户,普通用户仅能获取自身数据。解决方式如下:
- 调整REST API权限过滤器:添加PHP代码修改用户查询权限,允许指定角色(如管理员、编辑者)查看所有用户:
add_filter('rest_user_query', function($args, $request) { // 允许拥有编辑用户权限的角色查看所有用户 if (current_user_can('edit_users')) { unset($args['who']); // 移除默认的"仅当前用户"限制 } return $args; }, 10, 2);
将代码添加到主题的functions.php或自定义插件中。
- 使用管理员身份请求:以管理员身份登录后,携带会话cookie请求
wp-json/wp/v2/users,即可获取所有用户数据;删除用户可调用wp-json/wp/v2/users/{id}的DELETE方法,同时在请求Header中添加X-WP-Nonce(通过wp_create_nonce('wp_rest')生成)以验证权限。 - 确认用户角色权限:确保用于请求的账号拥有
list_users和delete_users权限,默认仅管理员角色具备这些权限,若需其他角色拥有权限,可通过用户角色编辑工具或自定义代码添加对应权限。
内容的提问来源于stack exchange,提问作者Rahul Singh
相关产品推荐
相关产品推荐

