2016-09-27 108 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 –