是否有挂钩或插件可以从 woocommerce 优惠券中排除某些产品标签?

Is there a hook or plugin to exclude certain product-tags from a woocommerce coupon?

我需要从 woocommerce 优惠券中排除产品标签。

我试图搜索 Google 一个适用的插件,但没有搜索到。

理想情况下,一个解决方案是一个插件,可以将自定义字段添加到优惠券 post 类型。但是,我将通过 hook/filter.

进行硬编码。

您可以使用一个过滤器来完成此操作woocommerce_coupon_is_valid_for_product

它接受4个参数,有效、产品、优惠券和价值。它是从 class-wc-coupon.php 在第 3 版左右的第 860 行调用的。它应该 return 一个布尔值 (true/false).

请注意,以下代码不完整且未经测试,仅供示例使用。

add_filter('woocommerce_coupon_is_valid_for_product', 'exclude_product_from_coupon_by_tag', 12, 4);
function exclude_product_from_coupon_by_tag($valid, $product, $coupon, $values ){
    
    //Check if product has tag/s
    $valid = has_term('INSERT_TERM_HERE', 'product_tag', $product);

    return $valid;
}

希望对您有所帮助!

正如 Seb Toombs 所说,您必须使用 woocommerce_coupon_is_valid_for_product 过滤器来按标签检查产品验证。如果验证 returns 出错,您必须将 $product 更改为 $product->get_id()

add_filter('woocommerce_coupon_is_valid_for_product', 'exclude_product_from_coupon_by_tag', 12, 4);
function exclude_product_from_coupon_by_tag($valid, $product, $coupon, $values ){
    
    //Check if product has tag/s
    $valid = has_term('INSERT_TERM_HERE', 'product_tag', $product->get_id());

    return $valid;
}