webentwicklung-frage-antwort-db.com.de

Nach Benutzer löschen im Backend umleiten

Wie kann ich nach dem Löschen eines Benutzers zu einer bestimmten Seite umleiten ?

Angenommen, ich möchte zu Demonstrationszwecken beim Löschen von Benutzerabonnenten zum Dashboard umleiten. Das habe ich bisher versucht:

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

Der obige Code hat mich erfolgreich zum Dashboard umgeleitet, aber der Benutzer wurde nicht gelöscht .

Ich hatte auch versucht, deleted_user. Dadurch wurde der Benutzer gelöscht, aber nicht umgeleitet.

Irgendwelche Ideen?

Prost!

3
Giraldi

Sie könnten dies auch tun,

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

Anonyme Funktionen (Abschlüsse), verfügbar in PHP 5.3+.

Leistungen:

  • Es ist nicht erforderlich, den ersten Haken an delete_user zu entfernen.
  • Keine Notwendigkeit, wp_delete_user() erneut auszuführen
  • Sie können sich immer noch mit deleted_user verbinden, da wir die Rolle des Benutzers in der Funktion beibehalten und daher unseren Abschluss in die Anweisung if(conditional) einfügen.
4
userabuser

a) delete_user hook:

Hier ist eine Idee:

Fügen Sie dies in Ihren Code ein, um den Benutzer zu löschen:

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

hier entfernen wir den Aktionsrückruf, um zu verhindern, dass er sich selbst erneut aufruft.

So wird Ihr Code:

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:

Der Hook deleted_user wird aktiviert , nachdem der Benutzer gelöscht wurde, jedoch nicht , bevor wie im Fall delete_user.

Das heißt, Sie können die Rolle des Benutzers nicht überprüfen, da sie gelöscht wurde.

Sie könnten es so benutzen, aber für alle Benutzer:

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