2016-09-03 15 views
3

私はいくつかの除外された商品のカート内のクーポンコードフィールドを隠そうとしています。商品カテゴリを追加し、このカテゴリをクーポンの使用から除外しました。商品カテゴリのカート内のクーポンフィールドを非表示にする

スニペットは、一度に1つの製品のみが許可されるようにカートを制限します。この場合、除外された商品のクーポンコードを表示する必要はありません。この検証ではユーザーがクーポンを適用することはできませんが、クーポンフィールドが表示されていない場合でも有効です。

これは私はそれが製品カテゴリを検索し、メッセージを表示したスニペットです:

// Find product category 
add_action('woocommerce_check_cart_items', 'checking_cart_items', 12); 
function checking_cart_items() { 
// set your special category name, slug or ID here: 
$special_cat = 'myproductcategory'; 
$bool = false; 
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) { 
    $item = $cart_item['data']; 
    if (has_term($special_cat, 'product_cat', $item->id)) 
     $bool = true; 
} 
// Displays a message if category is found 
if ($bool) 
    echo '<div class="checkoutdisc">A custom message displayed.</div>'; 

} 

これはカートでクーポンコードを隠し、一般的なスニペットです:

// hide coupon field on cart page 
function hide_coupon_field_on_cart($enabled) { 

if (is_cart()) { 
    $enabled = false; 
} 

return $enabled; 
} 
add_filter('woocommerce_coupons_enabled', 'hide_coupon_field_on_cart'); 

どのようにすることができます私はこれらの機能を一緒に働かせますか?

おかげ

答えて

4

更新:WooComerce 3+

との互換性はい、それは、このコードの組み合わせを使用して、可能です:当然のことながら、これはfunction.phpに

function hidding_coupon_field_on_cart_for_a_category($enabled) { 
    // Set your special category name, slug or ID here: 
    $special_cat = 'clothing'; 
    $bool = false; 

    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) { 
     $wc_product = $cart_item['data']; 
     // Woocommerce compatibility 
     $product_id = method_exists($wc_product, 'get_id') ? $wc_product->get_id() : $wc_product->id; 
     if (has_term($special_cat, 'product_cat', $product_id)) 
      $bool = true; 
    } 

    if ($bool && is_cart()) { 
     $enabled = false; 
    } 
    return $enabled; 
} 
add_filter('woocommerce_coupons_enabled', 'hidding_coupon_field_on_cart_for_a_category'); 

を行きますあなたのアクティブな子供のテーマ(またはテーマ)のファイル、またはすべてのプラグインファイル。

このコードはテスト済みであり、動作します。


参考文献:

+0

もう一つ。どのように私は同じ条件のためにカートに表示するdivを隠すことができます。このケースでは隠されていたクーポンの説明。 – Dudikowski

+0

申し訳ありませんが、それを逃した。今すぐ修正しました。 – Dudikowski

+0

カートページは、クーポンコードの仕組みをユーザーに伝える指示から始まります。私は私のテーマからページビルディングブロックを使用しています。だから、WooCommerceが追加する要素ではありません。表示されているdiv:この商品カテゴリが使用されている場合のみ表示されるdivです。 – Dudikowski

関連する問題