2016-12-27 5 views
2

Мне нужно автоматически добавить товар в корзину после регистрации пользователя (которая работала), но решить, какой продукт добавить пользователем meta (что не работает).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 я получил, но это Безразлично» t добавить что-нибудь в корзину. пример кода:

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. Я полагаю, что это значение задано в метаданных пользователя, поэтому, чтобы получить это значение идентификатора Promo с помощью функции get_user_meta(), вы должны определить правильные meta_key.

3) В своем коде вы должны заменить в ваших условиях '2' и '0' значения текущего пользователя Promo 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 появится только в одной группе идентификаторов. – GuyG

+0

+ пользователи регистрируются и автоматически заходят в систему. они вообще не могут попасть на эту страницу. Я приведу ваш пример в ближайшее время и отчитаюсь. благодаря! – GuyG