Antworten:
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_url
diese Option, um die URL einschließlich der Nonce abzurufen. Wenn Sie zu einer benutzerdefinierten URL umleiten möchten, übergeben Sie sie einfach als Argument.
<a href="<?php echo wp_logout_url('/redirect/url/goes/here') ?>">Log out</a>
Sie können auch Folgendes verwenden, wp_loginout
das den Link für Sie generiert, einschließlich der Übersetzung:
echo wp_loginout('/redirect/url/goes/here')
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
Wenn Sie die wp_logout_url()
Funktion nicht verwenden können, können Sie diese Überprüfung mithilfe des folgenden Codes deaktivieren:
add_action('check_admin_referer', 'logout_without_confirm', 10, 2);
function logout_without_confirm($action, $result)
{
/**
* Allow logout without confirmation
*/
if ($action == "log-out" && !isset($_GET['_wpnonce'])) {
$redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : 'url-you-want-to-redirect';
$location = str_replace('&', '&', wp_logout_url($redirect_to));
header("Location: $location");
die;
}
}
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
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.php
Datei 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:
$item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' ).'&redirect_to='.wp_login_url();
Dies funktionierte für mich, indem ich /?customer-logout=true
am Ende hinzufügte .
http://www.website.com/?customer-logout=true