2016-12-27 124 views
2

我需要在用戶註冊(工作)後自動將產品添加到購物車,但要決定由用戶元添加哪個產品(不起作用)。Woocommerce:按用戶自動將產品添加到購物車meta

第一次行動是剛剛註冊後添加一個產品,它完美地工作:

add_action('user_register', 'add_product_to_cart'); 
function add_product_to_cart() { 
    if (! is_admin()) { 
     $product_id = 115; 
     $found = false; 
     //check if product already in cart 
     if (sizeof(WC()->cart->get_cart()) > 0) { 
      foreach (WC()->cart->get_cart() as $cart_item_key => $values) { 
       $_product = $values['data']; 
       if ($_product->id == $product_id) 
        $found = true; 
      } 
      // if product not found, add it 
      if (! $found) 
       WC()->cart->add_to_cart($product_id); 
     } else { 
      // if no products in cart, add it 
      WC()->cart->add_to_cart($product_id); 
     } 
    } 
} 

現在我需要根據列出我所擁有的用戶promoID我添加一個具體的產品,但它不」不要在購物車中添加任何東西。代碼 例如:

add_action('user_register', 'add_product_to_cart'); 
function add_product_to_cart() { 
    if (! is_admin()) { 

     $group1iid1 = array("1", "2", "3", "4"); 
     $group1iid2 = array("5", "6", "7", "8"); 

     if (in_array("2", $group1iid1)) { 
      $product_id = 115; 
      WC()->cart->add_to_cart($product_id); 
     } elseif (in_array("0", $group1iid2)) { 
      $product_id = 219; 
      WC()->cart->add_to_cart($product_id); 

     } else { 
      $product_id = 231; 
      WC()->cart->add_to_cart($product_id); 
     } 
    } 
} 

如果我把代碼模板文件,只是呼應的東西,而不是添加一個產品 - 它工作正常,但如果是這樣的在function.php>什麼也沒有發生。

我缺少什麼?

回答

1

有你的代碼所缺少的東西:

1)在你的第一個條件,你也需要添加is_user_logged_in()條件,因爲我想這個代碼僅適用於新註冊資格的用戶。

2)您需要獲取當前用戶,HIS促銷ID值。我想這個值是在用戶元數據中設置的,所以要使用get_user_meta()函數獲得此Promo ID值,您必須定義正確的meta_key

3)在你的代碼在你的條件'2''0'當前用戶推廣ID ...
(也elseif (in_array("0", $group1iid2)) {條件將是永遠以取代"0"值不存在$group1iid2

正如我無法測試真正的這一切,這是某種工作的周圍,根據你的代碼(沒有任何擔保)

add_action('user_register', 'add_product_to_cart'); 
function add_product_to_cart() { 
    if (! is_admin() && is_user_logged_in()) { 

     // Get current user ID 
     $user_id = get_current_user_id(); 

     // DEFINE BELOW THE META KEY TO GET THE VALUE FOR YOUR GROUP OF CURRENT USER 
     $user_promo_id_meta_key = 'set_here_your_group_meta_key'; 

     // Getting the current user group ID 
     $user_promo_id = get_user_meta($user_id, $user_promo_id_meta_key, true); 

     $group1iid1 = array('1', '2', '3', '4'); 
     $group1iid2 = array('5', '6', '7', '8'); 

     if (in_array($user_promo_id, $group1iid1)) 
      $product_id = 115; 
     elseif (in_array($user_promo_id, $group1iid2)) 
      $product_id = 219; 
     else 
      $product_id = 231; 

     WC()->cart->add_to_cart($product_id); 

    } 
} 
+0

的「0」應該不會在在這個例子中的數組。 promoID將只出現在一組ID中。 – GuyG

+0

+用戶註冊並自動登錄後續字符。無論如何,他們實際上無法進入此頁面。 我馬上給你舉個例子,並回報。謝謝! – GuyG

相關問題