【问题标题】:Remove user and all its posts删除用户及其所有帖子
【发布时间】:2019-05-28 22:16:43
【问题描述】:

我需要使用 WordPress Rest API 删除用户及其所有(可能是自定义)帖子。

我尝试调用<url_base>/wp/v2/users/<id>,我必须提供另一个参数?reassign=USER_ID 才能将其帖子重新分配给另一个用户。

一个愚蠢的解决方案应该是向系统添加一个“垃圾”用户并将所有已删除的帖子分配给他。然后我可以创建一个工作来删除所有帖子。这对我来说似乎是一种非常愚蠢的方式.. :(

我只想删除它们。我可以从 WP 管理面板完成...为什么我不能通过 Rest Api?

谢谢

编辑 将“重新分配”作为空参数传递(不接受 null ......)API 通知我我无法删除自己的个人资料。我正在以订阅者(最终用户)的身份对其进行测试,但我需要能够管理和删除我自己的数据......我错了吗?!

【问题讨论】:

  • 似乎wp_delete_user 的重新分配是可选的。在 REST API 中它是强制性的,这似乎很奇怪。您是否尝试过省略它,或者将其保留为空/空?也许文档有错误。
  • 看起来好一点,但现在有一条消息通知我无法删除用户。我正在以订阅者的身份对其进行测试(因为我假装是该应用程序的最终用户),但我无法删除我的个人资料。我还尝试了另一条路线“/wp/v2/users/me”
  • 我认为这些身份验证问题不在范围内,应该在单独的问题中解决。您能否尝试使用具有足够权限的用户?这样,我们至少可以理清reassign参数上的问题。
  • 正如 scristalli 所说,这(可能)是一个权限问题:Subscriber 角色没有delete_posts 功能,因此您无法删除自己的帖子。您需要具有上述能力的更高角色才能删除您自己的帖子。订阅者也不能删除自己的帐户(甚至不能从仪表板中删除),这只有管理员才能做到。
  • 使用属于更高角色的不同用户,删除成功。我将设计一个具有更多功能的新角色,然后尝试将删除限制在其自己的个人资料中。

标签: wordpress wordpress-rest-api


【解决方案1】:

这是我的解决方案......也许不是最好的,但它似乎有效。

我为订阅者角色添加了 delete_usersremove_users 功能(为方便起见)。

我的 /DeleteUsers 休息端点检查在标头中发送的 JWT 令牌内加密的用户 ID,并将其与 user_id 参数进行比较。如果匹配,我可以删除用户。

现在我只需要避免用户可以访问 WP 管理面板并弄得一团糟!

这是代码:

function myDeleteProfile($data) {
  require_once(ABSPATH.'wp-admin/includes/user.php');

  $headers = getallheaders();
  if(!isset($headers['Authorization']) || !$headers['Authorization']) {
    return array('esito'=>'ko', 'descrizione'=>'Fail message!');
  }

  $jwt_parts = preg_split('/\./', $headers['Authorization']);
  $jwt_decoded = json_decode(base64_decode($jwt_parts[1]));
  $jwt_user = $jwt_decoded->data->user->id; 

  if( intval($data['user_id']) != intval($jwt_user) ) { 
    return array('esito'=>'ko', 'descrizione'=>'User cannot delete.');
  }
  else { 
    if( wp_delete_user($jwt_user,null) ){
        return array('esito'=>'ok', 'descrizione'=>'Deleting...');
    } 
    else {
        return array('esito'=>'ko', 'descrizione'=>'Error.'); 
    }
  } 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 2015-02-28
    • 2012-02-19
    • 2014-04-20
    • 1970-01-01
    相关资源
    最近更新 更多