如何使用REST API删除用户而无需重新分配

时间:2022-02-18 作者:The Oracle

Iam正在尝试使用rest api admin api帐户删除订阅服务器用户。然而,api似乎需要指定重新分配用户id,但我不想重新分配。

Iam使用python请求模块,我发出一个基本的删除请求,如下所示:

import base64
import requests
import json

from Load_Credentials import user,password

userurl=\'https://mywebsite.com/wp-json/wp/v2/users\'
credentials = user + \':\' + password
token = base64.b64encode(credentials.encode())
header = {\'Authorization\': \'Basic \' + token.decode(\'utf-8\'),\'Content-Type\': \'application/json\',\'User-Agent\': \'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36\'}

userid=139
deleteurl=\'https://mywebsite.com/wp-json/wp/v2/users/139?force=True\'
response = requests.delete(deleteurl, headers=header)

print(response.json())
这是我得到的回应:

\'code\': \'rest_missing_callback_param\', \'message\': \'Missing parameter(s): reassign\', \'data\': {\'status\': 400, \'params\': [\'reassign\']}}
我知道请求需要重新分配参数,但是,我不想重新分配,我想删除而不重新分配。我尝试了重新分配=false,但也没有成功:

deleteurl=https://myywebsite.com/wp-json/wp/v2/users/139?reassign=false?force=True
以下是回复:

{\'code\': \'rest_invalid_param\', \'message\': \'Invalid parameter(s): reassign\', \'data\': {\'status\': 400, \'params\': {\'reassign\': \'Invalid user parameter(s).\'}, \'details\': {\'reassign\': {\'code\': \'rest_invalid_param\', \'message\': \'Invalid user parameter(s).\', \'data\': {\'status\': 400}}}}}
有什么建议吗?

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

查看用户端点的代码,我认为这是不可能的。我也挖了this ticket on the issue 链接到this ticket 这证实了这是一种故意的限制。

解释是,WordPress没有提供在不删除用户内容或将其重新分配给其他作者的情况下删除用户的选项。这是因为WordPress不支持没有作者的内容。如果此参数是可选的,则可以在没有作者的情况下留下内容。

看起来有人在谈论通过传递假值来删除用户的内容,但这似乎没有实现。