根据条件将 Woocommerce 产品变体变灰?

Grey out Woocommerce product variation based on conditions?

我有一个自定义的 WooCommerce 商店,我希望能够根据条件将某些产品变体变灰,但我不确定在代码中的哪个位置执行此操作。

任何人都可以告诉我 files/hooks/actions 我可以在其中将一些自定义代码注入到变体输出中以便实现这一点吗?

谢谢。

对于你的两个问题,你可以用不同的方式使用woocommerce_add_to_cart_validation过滤挂钩。根据您的用户角色和现有函数参数的某些条件,客户将能够 select 您产品的变体,但如果不允许,则无法将其添加到购物车。您甚至可以在客户尝试添加不允许的内容时显示通知……

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;
}

对于最后一个问题,您需要 set/update 会员每次下订单时按月为会员提供有关 5 种产品的一些自定义用户元数据。为此,您可以使用 woocommerce_thankyouwoocommerce_order_status_completed 操作挂钩在用户元数据中设置自定义数据。然后,您将能够在 woocommerce_add_to_cart_validation 过滤器挂钩中检查启用或禁用正确产品变体的数据。

最后,如果你真的想把一些变体变灰,你将不得不使用 Javascript/jQuery,但是这将是相当困难的,因为已经有很多 javascript/Ajax WooCommerce 事件在产品变体上,这将与您的相冲突。但在 WooCommerce 中,一切皆有可能,具体取决于时间和技能……