2016-09-27 94 views
4

我正在Woocommerce网上购物,我的客户问我他不想让人们注册,他会为他的每个客户创建一个用户和密码。这样他就可以控制谁在他的商店购买。未登录用户Woocommerce,重定向

因此,我进入了Woocommerce并禁用了结账和到处注册,以及允许客人下订单的选项。一切工作正常,除了有人试图下订单,退出时,当他试图去结账页面时,它只是显示一条未格式化的消息,说“你必须登录才能下订单”。当尝试访问结帐时,有没有办法可以将未登录的客户重定向到登录页面?

回答

2

可能是这个代码可能是更紧凑,简单方便:

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 login redirect based on cart

0

我设法做到了我的自我!但是如果有人有更清晰的代码可以这样做,我会接受建议。

我所做的就是贴在子主题的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; 
 
    } 
 
}

感谢 亲切的问候

+0

如果你要使用上面的代码,记得要改变/我的账户/到什么都就是你的登录页面。 –

1

使用下面的代码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/'); 
     } 
    } 
} 
+0

你的代码和我的代码有什么区别?只是好奇 –

+0

没什么大不了的。我只是发布我的答案,却没有意识到你已经有了一个解决方案。我猜只有它更清洁,但你的也很完美。我不知道我是否应该删除我的答案。 –

+0

我用你的代码,它崩溃XD所以..要么我把它粘贴错了,或者你的代码是马车XD –