<a href="<?php bloginfo('url'); ?>/wp-login.php?action=logout">Log out</a>
它会将我重定向到我需要确认注销的页面。
如何取消确认并注销后重定向到首页?
#1 楼
发生这种情况是因为您缺少URL中必需的随机数,而该随机数已在wp-login.php
中进行了检查。请使用wp_logout_url
来检索包含随机数的URL。如果要重定向到自定义URL,只需将其作为参数传递。case 'logout' :
check_admin_referer('log-out');
...
还可以使用
wp_loginout
为您生成包含翻译的链接:<a href="<?php echo wp_logout_url('/redirect/url/goes/here') ?>">Log out</a>
#2 楼
如果无法使用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替换
'url-you-want-to-redirect'
。将其添加到您的
functions.php
评论
这适用于未经验证的注销,但不会重定向到我想要的URL。
–阮玉
17年6月29日在8:27
@PhuNguyen您只需要在该代码中的冒号后面加引号的重定向请求中添加重定向URL。
– NJENGAH
17/12/17在6:01
删除此验证是否有任何安全隐患?
–rok
18 Mar 20 '18在0:21
@ user1264304我相信以某种方式加载到浏览器中的恶意JS可以重定向到登录页面,但是要做的就是注销用户。真正的恶意代码可能会试图在有效的随机数之前替换URL。用户可以导航到另一个站点,然后该站点具有指向当前站点的注销页面的链接-假设另一个站点知道该用户具有关系。同样,除了注销用户外,没有其他后果。我从未见过。因此,回答您的问题,我认为删除验证没有安全隐患。
– TonyG
18年5月4日在15:47
错误,重定向过多...
–所罗门·克洛森(Solomon Closson)
19年2月5日在16:49
#3 楼
如果在菜单中创建自定义链接,请将标签设置为“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();
参考链接
**尝试不起作用。确实要注销页面,然后单击按钮时4出了问题。
#4 楼
通过在末尾添加/?customer-logout=true
对我有用。http://www.website.com/?customer-logout=true
评论
echo wp_loginout('/ redirect / url / goes / here')工作正常。
– Mayur Devmurari
2015年10月30日,下午5:32
我正在使用wp_logout_url(get_permalink())并且未绕过确认页面。随机数作为URL的一部分生成,但我仍被发送到确认页面
–拉尔方斯
18/12/17在10:42
同样的问题在这里:(
–贾默森
19年4月14日在6:34
谢谢。工作我回声wp_logout_url();
– Erhan Demirci
20 May 26 '18:53