web-dev-qa-db-fra.com

Redirection après suppression de l'utilisateur dans le backend

Comment puis-je rediriger vers une certaine page après la suppression de l'utilisateur ?

À des fins de démonstration, supposons que je souhaite rediriger vers le tableau de bord lors de la suppression d'un utilisateur . C'est ce que j'ai essayé jusqu'à présent:

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");

Le code ci-dessus m'a correctement redirigé vers le tableau de bord, mais l'utilisateur n'a pas été supprimé .

J'avais aussi essayé deleted_user. Cela a supprimé l'utilisateur mais il n'a pas été redirigé.

Des idées?

À votre santé!

3
Giraldi

Tu pourrais aussi faire ça,

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");

Fonctions anonymes (fermetures), disponibles dans PHP 5.3+.

Avantages:

  • Pas besoin de supprimer le hook initial sur delete_user
  • Pas besoin de relancer wp_delete_user()
  • Vous devez toujours accrocher sur deleted_user car nous conservons le rôle de l'utilisateur dans la fonction. Par conséquent, nous plaçons notre fermeture dans l'instruction if(conditional).
4
userabuser

a) delete_user hook:

Voici une idée:

Ajoutez ceci dans votre code pour supprimer l'utilisateur:

remove_action("delete_user", "mod_redirect_subscriber_delete");
wp_delete_user($user_id);

où nous supprimons le rappel d’action pour l’empêcher de s’appeler à nouveau.

Donc, votre code devient:

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 hook:

Le hook deleted_user est activé après l'utilisateur a été supprimé, mais pas avant comme dans le cas delete_user.

Cela signifie que vous ne pouvez pas vérifier le rôle de l'utilisateur, car il a été supprimé.

Vous pouvez l'utiliser comme ceci, mais pour tous les utilisateurs:

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