2016-12-27 4 views
2

사용자 등록 (작동) 후에 제품을 장바구니에 자동으로 추가해야하지만 사용자 메타에 추가 할 제품 (작동하지 않음)을 결정해야합니다.Woocommerce : 자동으로 사용자 메타에 의해 장바구니에 제품 추가

첫 번째 조치는 등록 후 제품을 추가하는 단지이며 그것은 완벽하게 작동 :

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) 첫 번째 상태에서 당신이 코드는 새로운 내 등록 사용자를위한 것입니다한다고 가정으로도, is_user_logged_in() 조건을 추가해야합니다

답변

1

코드에서없는 것을있다.

2) 의 현재 사용자 인 HIS 프로모션 ID 값을 얻어야합니다. 이 값은 사용자 메타 데이터에 설정되어 있으므로이 프로모션 ID 값을 get_user_meta() 함수로 가져 오려면 올바른 meta_key을 정의해야합니다.

3) 코드에서 당신은 당신의 조건 현재 사용자 프로모션 ID에 의해 '2''0'...
(또한 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