2016-12-27 32 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ユーザーの持っているリストに基づいて特定の製品を追加する必要がありますが、それはdoesnのカートに何も追加しないでください。コードの 例:私は、テンプレートファイルにコードを取り、単に製品を追加するのではなく、何かをエコー場合

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)あなたの最初の状態では、あなたが、私はこのコードは唯一の新しいregistratedユーザーのためであると仮定しても、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の1つのグループにのみ表示されます。 – GuyG

+0

+ユーザが登録され、自動ログイン後になります。とにかくこのページには実際には行きません。 私はすぐにあなたの例を試してみて、報告します。ありがとう! – GuyG

関連する問題