Dies liegt daran, dass in der URL, die eingecheckt wird, die erforderliche Nonce fehlt wp-login.php
case'logout':
check_admin_referer('log-out');...
Verwenden Sie wp_logout_urldiese Option, um die URL einschließlich der Nonce abzurufen. Wenn Sie zu einer benutzerdefinierten URL umleiten möchten, übergeben Sie sie einfach als Argument.
Ich verwende wp_logout_url( get_permalink())und die Bestätigungsseite wird nicht umgangen. Die Nonce wird als Teil der URL generiert, aber ich werde trotzdem zur Bestätigungsseite weitergeleitet
Ralphonz,
Gleiche Ausgabe hier :(
Jarmerson
15
Wenn Sie die wp_logout_url()Funktion nicht verwenden können, können Sie diese Überprüfung mithilfe des folgenden Codes deaktivieren:
Dies funktioniert für das Abmelden ohne Validierung, es wird jedoch nicht zu der von mir gewünschten URL umgeleitet.
Phu Nguyen
@PhuNguyen Sie müssen nur die Weiterleitungs-URL zur Weiterleitungsanforderung in dem Code hinzufügen, in dem nach dem Doppelpunkt Anführungszeichen stehen.
NJENGAH
Gibt es Sicherheitsrisiken beim Entfernen dieser Validierung?
Rok
@ user1264304 Ich glaube, dass böswilliges JS, das irgendwie in den Browser geladen wurde, eine Umleitung zur Anmeldeseite durchführen könnte, aber alles, was es tun wird, ist, den Benutzer abzumelden. Wirklich bösartiger Code würde wahrscheinlich versuchen, die URL vor einer gültigen Nonce zu ersetzen. Der Benutzer kann zu einer anderen Site navigieren, die dann einen Link zur Abmeldeseite der aktuellen Site enthält - vorausgesetzt, der anderen Site ist bekannt, dass der Benutzer eine Beziehung hat. Wieder keine andere Konsequenz als den Benutzer abzumelden. Ich habe das noch nie gesehen. Um Ihre Frage zu beantworten, glaube ich nicht, dass es eine Sicherheitsbedingung für das Entfernen der Validierung gibt.
TonyG
Äh, zu viele Weiterleitungen ...
Solomon Closson
3
Wenn Sie in Ihrem Menü einen benutzerdefinierten Link erstellen, setzen Sie die Bezeichnung auf “Logout”und die URL auf http://yourdomain.com/wp-login.php?action=logout. Fügen Sie dann diese Funktion zu Ihrer functions.phpDatei hinzu:
function change_menu($items){foreach($items as $item){if( $item->title =="Logout"){
$item->url = $item->url ."&_wpnonce=". wp_create_nonce('log-out');}}return $items;}
add_filter('wp_nav_menu_objects','change_menu');
Wenn Sie nach dem Abmelden zur Anmeldeseite umleiten möchten, sollten Sie die Anmelde-URL wie folgt anhängen:
wp_logout_url( get_permalink())
und die Bestätigungsseite wird nicht umgangen. Die Nonce wird als Teil der URL generiert, aber ich werde trotzdem zur Bestätigungsseite weitergeleitetWenn Sie die
wp_logout_url()
Funktion nicht verwenden können, können Sie diese Überprüfung mithilfe des folgenden Codes deaktivieren:Ersetzen Sie diese
'url-you-want-to-redirect'
durch die URL, die Sie nach dem Abmelden umleiten möchten.Fügen Sie es in Ihrem
functions.php
quelle
Wenn Sie in Ihrem Menü einen benutzerdefinierten Link erstellen, setzen Sie die Bezeichnung auf
“Logout”
und die URL aufhttp://yourdomain.com/wp-login.php?action=logout
. Fügen Sie dann diese Funktion zu Ihrerfunctions.php
Datei hinzu:Wenn Sie nach dem Abmelden zur Anmeldeseite umleiten möchten, sollten Sie die Anmelde-URL wie folgt anhängen:
Referenzlink
quelle
Dies funktionierte für mich, indem ich
/?customer-logout=true
am Ende hinzufügte .http://www.website.com/?customer-logout=true
quelle