在后台删除用户后重定向

时间:2013-05-19 作者:Giraldi

我该怎么办redirect 到某一页after user deletion?

出于演示目的,假设我想redirect to the dashboard on user subscriber deletion. 这就是我迄今为止所尝试的:

function mod_redirect_subscriber_delete($user_id) {
  $user  = get_user_by(\'id\', $user_id);
  $role   = $user->roles[0];
  if ($role == \'subscriber\') {
    wp_redirect( admin_url(\'/index.php\') );
    exit;
  }
}
add_action("delete_user", "mod_redirect_subscriber_delete");
上面的代码成功地将我重定向到仪表板,但user didn\'t get deleted.

我也试过了deleted_user. 这删除了用户,但没有重定向。

有什么想法吗?

干杯

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

你也可以这样做,

function mod_redirect_subscriber_delete($user_id) {
  $user  = get_user_by(\'id\', $user_id);
  $role   = $user->roles[0];
  if ($role == \'subscriber\') {
    add_action("deleted_user", function(){
        wp_redirect( admin_url(\'/index.php\') );
        exit;
    });
  }
}
add_action("delete_user", "mod_redirect_subscriber_delete");
PHP 5.3+中提供的匿名函数(闭包)。

优点:

无需移除上的初始挂钩delete_userwp_delete_user()deleted_user 因为我们在函数中保留了用户的角色,所以我们将闭包放在if(conditional) 声明

SO网友:birgire

(a)delete_user 钩子:这里有一个想法:

将此添加到代码中以删除用户:

remove_action("delete_user", "mod_redirect_subscriber_delete");
wp_delete_user($user_id);
我们移除动作回调以防止它再次调用自己。

因此,您的代码变成:

function mod_redirect_subscriber_delete($user_id) {
  $user  = get_user_by(\'id\', $user_id);
  $role   = $user->roles[0];
  if ($role == \'subscriber\') {

    // start extra:
    remove_action("delete_user", "mod_redirect_subscriber_delete");
    wp_delete_user($user_id);
    // end extra

    wp_redirect( admin_url(\'/index.php\') );
    exit;
  }
}
add_action("delete_user", "mod_redirect_subscriber_delete");

b)deleted_user 挂钩:

deleted_user 钩子在用户被删除后被激活,但在用户被删除前不会被激活delete_user 案例

这意味着您无法检查用户的角色,因为它已被删除。

您可以这样使用它,但对于所有用户:

function mod_redirect_subscriber_deleted($user_id) {
   wp_redirect( admin_url(\'/index.php\') );
   exit();
}
add_action("deleted_user", "mod_redirect_subscriber_deleted");

结束

相关推荐

通过前端添加CPT后,无法使wp_reDirect()工作

我试图通过在wordpress上创建一个相对简单的应用程序来学习PHP,这是一个基本的CRM,我已经取得了不错的进步,但在一些细节上遇到了困难。在用户创建新客户后,让wp\\u redirect()工作时,我遇到了一些严重的“headers ready sent”问题。下面是我想做的一个例子:新客户。php:通过前端创建一个新的自定义帖子类型,然后重定向到特定客户的单个帖子页面。代码如下: <?php $address_line_1 = $_POST[\'ad