有时候,登出WooCommerce站点可能要分两步,先点登出链接,到一个确认登出界面,再点确认登出链接,才能退出账户。有点麻烦对吧,但这可能不是WooCommerce的锅。没错,WooCommerce确实设计了这个功能,但测试5.8.0版本,正常的退出是一次退出,没有确认过程,可能是你的主题代码没写对。
什么情况下会出现登出确认提醒
当你的登出链接如下所示,就会出现登出提醒
https://mysite.com/my-account/customer-logout
正常的登出链接是下面这样,后面带一个_wpnonce参数,有这个参数就会直接退出。这个链接可以通过wc_logout_url()
函数获取。
https://mysite.com/my-account/customer-logout?_wpnonce=b9cae22851
说到底,就是WordPress要求用户的登出链接必须有一个用于安全检测的Nonce,Nonce是一个在加密通信只能使用一次的数字。你的链接里少了这个,通不过WordPress的检测,WooCommerce只好委婉的告诉你正确的链接是啥。
这段提醒的位置如下:
//class-wc-shortcode-my-account.php line 61
ob_start();
if ( isset( $wp->query_vars['customer-logout'] ) ) {
/* translators: %s: logout url */
wc_add_notice( sprintf( __( 'Are you sure you want to log out? <a href="%s">Confirm and log out</a>', 'woocommerce' ), wc_logout_url() ) );
}
// Collect notices before output.
$notices = wc_get_notices();
如何去掉登出确认提醒
如果你会读代码,可以看看主题是在哪把链接搞错的。实在找不到也可以硬来,在主题的functions.php
里添加如下代码可以搞定。
// Source:https://wordpress.org/plugins/disable-woocom-logout-confirmation/
function disable_wc_logout_confirmation(){
global $wp;
if(isset($wp->query_vars['customer-logout'])){
wp_redirect(str_replace('&','&',wp_logout_url( wc_get_page_permalink('myaccount'))));
exit;
}
}
add_action('template_redirect', 'disable_wc_logout_confirmation');
参考文章:How to log out without confirmation ‘Do you really want to log out?”?