2016-12-02 145 views
0

在我的商店中,我的產品帶有「添加到購物車」按鈕前的複選框。 如果客戶選中此複選框並添加到購物車,則會將該值發送到購物車會話。WooCommerce使用相同的自定義參數在購物車中添加產品

我的複選框的代碼:

<input type="checkbox" id="check" name="check" value="colissimo"> 

要輸出我的複選框值我在cart.php使用:

$cart_item['check']; 

我想創造籤微型車,如果有一個函數帶有該複選框的產品。

出現情況1:

顧客在選中複選框的情況下將產品添加到購物車。 客戶轉到其他產品。 在產品中他們有一個複選框,但客戶沒有檢查並添加到購物車。

購物車返回false,因爲它沒有被選中。

出現情況2: 客戶添加到購物車的產品與複選框不勾選。 客戶轉到其他產品。 在產品中,他們有一個複選框,但客戶檢查箱並添加到購物車。

購物車因檢查而返回false。

我想用下面的代碼來實現這一點,但它不工作:

function is_product_the_same_cat($valid, $product_id, $quantity) { 
    global $woocommerce; 
    if($woocommerce->cart->cart_contents_count == 0){ 
     return true; 
    } 
    foreach ($woocommerce->cart->get_cart() as $cart_item_key => $values) { 
     $_product = $values['data']; 

     $items = $woocommerce->cart->get_cart(); 

     $target_terms = $woocommerce->cart->get_cart(); 

     foreach ($items as $item) { 
      $cat_ids[] = $cart_item['check']; 
     } 

     foreach ($target_terms as $term) { 
      $target_cat_ids[] = $cart_item['check']; 
     }   
    } 
    $same_cat = array_intersect($cat_ids, $target_cat_ids); 
    print_r ($same_cat); 
    if(count($same_cat) > 0) return $valid; 
    else { 
     wc_add_notice('This product have not the same parameter!', 'error'); 
     return false; 
    } 
} 
add_filter('woocommerce_add_to_cart_validation', 'is_product_the_same_cat',10,3); 

感謝的對你有所幫助。

回答

0
function is_product_the_same_cat($valid, $product_id, $quantity) { 
    global $woocommerce; 
    //si panier vide ok 
    if($woocommerce->cart->cart_contents_count == 0){ 
     return true; 
    } 


     foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) { 

     $cat_ids[] = $cart_item['check']; 
    } 

    $coli = $cat_ids; 

    if ((in_array("colissimo", $coli))){ 
     if ((in_array("colissimo", $coli)) && (($_POST['check'])==='colissimo')){ 

      return $valid;} 

     else { 

      wc_add_notice('Les produits Colissimo font l\'objet d\'un panier séparé !', 'error'); 

      return false; 
     } 
    }else{ 
     if(!isset ($_POST['check'])){return $valid;} 
     else { 
      wc_add_notice('Les produits Colissimo font l\'objet d\'un panier séparé !', 'error'); 

      return false; 
     } 
    } 


} 
add_filter('woocommerce_add_to_cart_validation', 'is_product_the_same_cat',10,3); 
相關問題