2017-03-07 53 views
1

我有一个自定义的WooCommerce商店,我希望能够根据条件变灰某些产品变体,但我不确定代码中的位置。根据条件灰掉Woocommerce产品变体?

  • 我有两个价格为每个项目,一个是成员价格,一个是零售价格。
  • 我希望每个人都能看到每个变化,但无法选择对他们不可用的变化,以便非成员可以看到零售价格,但无法选择它,反之亦然。
  • 我想要的其他自定义如下:我希望能够只允许会员以每月会员价格购买5件产品,然后它将切换到零售价格,所以我需要能够灰色根据特定条件为会员提供会员价格。

任何人都可以指向文件/钩子/动作,我可以在变化输出中注入一些自定义代码,这样我就可以做到这一点吗?

谢谢。

回答

1

对于您的两个问题,您可以以不同的方式使用woocommerce_add_to_cart_validation过滤器挂钩。在一些基于用户角色和现有功能参数的条件下,客户将能够选择您的产品的变体,但如果他不被允许,将无法将其添加到购物车。你甚至可以显示通知时不允许当客户尝试添加的东西...

add_filter('woocommerce_add_to_cart_validation', 'custom_add_to_cart_validation', 10, 5); 
function custom_add_to_cart_validation($passed, $product_id, $quantity, $variation_id, $variations) { 

    // Your code goes here 

    // If $passed is set to "false", the product is not added 
    // $passed = false; 

    return $passed; 
} 

为了您的最后一个问题,你将需要一个月的成员设置/更新有关的5种产品的一些自定义用户的元数据,每次他们下订单。你可以使用这个woocommerce_thankyouwoocommerce_order_status_completed动作挂钩在用户元数据中设置自定义数据。然后,您将能够检查此数据是否启用或禁用了过滤器挂钩中的正确产品变体。要完成,如果你真的想要变灰一些变化,你将不得不使用JavaScript/jQuery,但是会变得非常困难,因为在产品变体上已经有很多javascript/Ajax WooCommerce事件,会与你发生冲突。但在WooCommerce中,一切都可能取决于时间和技能......