返回介绍

WooCommerce移除登出账户的确认提示

发布于 2022-01-02 19:03:56 字数 1947 浏览 1057 评论 0 收藏 0

有时候,登出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('&amp;','&',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?”?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文