Відповіді:
Це трапляється тому, що вам не вистачає потрібного поняття в URL-адресі, в яку ви перевіряєтесь wp-login.php
case 'logout' :
check_admin_referer('log-out');
...
Використовуйте wp_logout_url
для того, щоб отримати URL-адресу, включаючи нон. Якщо ви хочете переспрямувати на власну URL-адресу, просто передайте її як аргумент.
<a href="<?php echo wp_logout_url('/redirect/url/goes/here') ?>">Log out</a>
Ви також можете використати, wp_loginout
що створює посилання для вас, включаючи переклад:
echo wp_loginout('/redirect/url/goes/here')
wp_logout_url( get_permalink())
і сторінку підтвердження не обійти стороною. Поняття генерується як частина URL-адреси, але мене все одно надсилають на сторінку підтвердження
Якщо ви не можете використовувати wp_logout_url()
функцію, ви можете вимкнути цю перевірку за допомогою цього коду:
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;
}
}
Замініть 'url-you-want-to-redirect'
URL-адресу, яку потрібно перенаправити після виходу.
Додайте його до свого functions.php
Якщо ви створюєте у своєму меню спеціальне посилання, встановіть мітку “Logout”
та встановіть URL-адресу http://yourdomain.com/wp-login.php?action=logout
. Потім додайте цю функцію у свій functions.php
файл:
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');
Якщо ви хочете переадресувати на сторінку входу після виходу, слід додати URL-адресу входу як:
$item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' ).'&redirect_to='.wp_login_url();
Це працювало для мене, додаючи /?customer-logout=true
в кінці.
http://www.website.com/?customer-logout=true