首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Woocommerce:每个交易只允许一个标签上的产品

问Woocommerce:每个交易只允许一个标签上的产品
EN

Stack Overflow用户
提问于 2015-09-02 09:03:17
回答 1查看 426关注 0票数 0

我有一个WooCommerce网站与响应超市在线主题- Oswad安装。每个产品都有对应于不同供应商的4个标签中的一个。在加入购物车时,我需要做的是:

  1. 检查购物车的产品,并得到他们的标签。
  2. 如果购物车是空的,或者产品标签匹配,允许按照正常情况添加到购物车。
  3. 如果产品有一个不同的标签,那么购物车的内容,禁用添加到购物车按钮。
  4. 步骤1-3应该只在每个事务中发生一次。

我知道我可以用if ( has_term( 'tag', 'product_tag') )检查标签,

在add-to-cart.php中,$product->isPurchasable()将切换按钮的可见性。

我的绊脚石是找出如何把所有这些放在一起来满足需求。我试图寻找如何限制购物车项目的类别,但提出了死胡同。我寻找插件,但那些限制了每个订单的最小/最高产品,而不是检查项目的类别/标签。我甚至试着去看那些钩子,但最后却变得更加困惑。

如果我能找到一个指向正确方向的指针,会很感激的。

EN

回答 1

Stack Overflow用户

发布于 2015-09-03 10:06:15

一种可能的解决方案是在Add-to-Cart.php中:

代码语言:javascript
复制
global $woocommerce, $product;
$terms = wp_get_post_terms($product->id, 'product_tag');

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

foreach($items as $item => $values){
    $_product = $values["data"];
    $_terms = wp_get_post_terms($_product->id, 'product_tag');
    //echo "product slug: " . $terms[0]->slug;
    //echo "cart slug: " . $_terms[0]->slug;
    if ($terms[0]->slug !== $_terms[0]->slug){
        //echo "NO MATCH";
        $match = false;
    }
}

然后添加一个控制add to cart按钮的if ($match)语句:apply_filters('woocommerce_loop_add_to_cart_link', ...

另外,将代码添加到woocommerce/single-product/add-to-cart/simple.php,并将if语句添加到add按钮的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32348888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档