Câu trả lời:
Điều này xảy ra bởi vì bạn đang thiếu thông tin không cần thiết trong URL đang được kiểm tra wp-login.php
case 'logout' :
check_admin_referer('log-out');
...
Sử dụng wp_logout_url
để truy xuất URL bao gồm cả nonce. Nếu bạn muốn chuyển hướng đến một URL tùy chỉnh, chỉ cần chuyển nó dưới dạng đối số.
<a href="<?php echo wp_logout_url('/redirect/url/goes/here') ?>">Log out</a>
Bạn cũng có thể sử dụng wp_loginout
để tạo liên kết cho bạn bao gồm cả bản dịch:
echo wp_loginout('/redirect/url/goes/here')
wp_logout_url( get_permalink())
và trang xác nhận không được bỏ qua. Số nonce được tạo như một phần của URL nhưng tôi vẫn được gửi đến trang xác nhận
Nếu bạn không thể sử dụng wp_logout_url()
chức năng, Bạn có thể tắt xác thực này bằng mã này:
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;
}
}
Thay thế 'url-you-want-to-redirect'
bằng URL bạn muốn chuyển hướng sau khi đăng xuất.
Thêm nó vào functions.php
Nếu bạn tạo một liên kết tùy chỉnh trong menu của mình, hãy đặt nhãn thành “Logout”
và đặt URL thành http://yourdomain.com/wp-login.php?action=logout
. Sau đó thêm chức năng này vào functions.php
tập tin của bạn :
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');
Nếu bạn muốn chuyển hướng đến trang đăng nhập sau khi đăng xuất thì bạn nên thêm URL đăng nhập là:
$item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' ).'&redirect_to='.wp_login_url();
Điều này làm việc cho tôi bằng cách thêm /?customer-logout=true
vào cuối.
http://www.website.com/?customer-logout=true