Answers:
发生这种情况的原因是,您在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