2016-12-27 222 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

相关问题