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é!
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:
delete_user
wp_delete_user()
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)
.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");
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");