未登录用户Woocommerce,重定向


Non logged in users Woocommerce, redirection

我正在用Woocommerce做一个在线商店,我的客户问我他不希望人们能够注册,他将为他的每个客户创建一个用户和密码。这样他就可以控制谁在他的店里买东西了。

所以我进入Woocommerce,在结账时和任何地方禁用注册,以及允许客人下订单的选项。一切都很好,除了当有人试图下订单时,当注销时,当他试图转到结帐页面时,它只是显示一条未格式化的消息,说"您必须登录才能下订单"。是否有一种方法,我可以重定向未登录的客户登录页面,当试图访问结帐?

也许这段代码可以更紧凑、更简单、更方便:

add_action('template_redirect','check_if_logged_in');
function check_if_logged_in() {
    if(!is_user_logged_in() && is_checkout())
        wp_redirect( get_permalink( get_option('woocommerce_myaccount_page_id') ) );
}

此代码位于您的活动子主题(或主题)的function.php文件或任何插件文件中。

此代码已经过测试,功能齐全。


参考:WooCommerce登录重定向基于购物车

在functions.php

中使用以下代码
add_action( 'template_redirect', 'redirect_user_to_login_page' );
function redirect_user_to_login_page(){
    // Make sure your checkout page slug is correct
    if( is_page('checkout') ) {
        if( !is_user_logged_in() ) {
            // Make sure your login page slug is correct in below line
            wp_redirect('/my-account/');
        }
    }
}

我自己做到了!但如果有人有更清晰的代码,我愿意听取建议。

我所做的是将以下代码粘贴到子主题的functions.php文件上:

add_action('template_redirect','check_if_logged_in');
function check_if_logged_in()
{
    if(!is_user_logged_in() && is_checkout())
    {
        $url = add_query_arg(
            'redirect_to',
            get_permalink($pagid),
            site_url('/my-account/')
        );
        wp_redirect($url);
        exit;
    }
}

谢谢亲切的问候