Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从Woocommerce中的优惠券使用中排除具有2个特定属性术语的变体_Php_Wordpress_Woocommerce_Custom Taxonomy_Coupon - Fatal编程技术网

Php 从Woocommerce中的优惠券使用中排除具有2个特定属性术语的变体

Php 从Woocommerce中的优惠券使用中排除具有2个特定属性术语的变体,php,wordpress,woocommerce,custom-taxonomy,coupon,Php,Wordpress,Woocommerce,Custom Taxonomy,Coupon,我需要防止使用优惠券,如果客户的购物车中有以下属性术语的任何特定产品变化: attribute\u pa\u style=>whirly attribute\u pa\u style=>circle 我已经浏览了Woocommerce脚本,这些脚本适用于限制特定产品和特定类别,但对于属性和所有优惠券,我无法理解 非常感谢您的帮助。这可以通过使用woocommerce\u优惠券\u是否有效来实现。过滤挂钩,方法如下: add_filter( 'woocommerce_coupon_is_val

我需要防止使用优惠券,如果客户的购物车中有以下属性术语的任何特定产品变化:

  • attribute\u pa\u style=>whirly
  • attribute\u pa\u style=>circle
我已经浏览了Woocommerce脚本,这些脚本适用于限制特定产品和特定类别,但对于属性和所有优惠券,我无法理解


非常感谢您的帮助。

这可以通过使用
woocommerce\u优惠券\u是否有效来实现。
过滤挂钩,方法如下:

add_filter( 'woocommerce_coupon_is_valid', 'check_if_coupons_are_valid', 10, 3 );
function check_if_coupons_are_valid( $is_valid, $coupon, $discount ){
    // YOUR ATTRIBUTE SETTINGS BELOW:
    $taxonomy   = 'pa_style';
    $term_slugs = array('swirly', 'circle');

    // Loop through cart items and check for backordered items
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        foreach( $cart_item['variation'] as $attribute => $term_slug ) {
            if( $attribute === 'attribute_'.$taxonomy && in_array( $term_slug, $term_slugs ) ) {
                $is_valid = false; // attribute found, coupons are not valid
                break; // Stop and exit from the loop
            }
        }
    }
    return $is_valid;
}

代码进入活动子主题(或活动主题)的function.php文件。已测试且有效。

是否将“样式”产品属性用于产品变体?您的目标产品类型是什么?是的,样式属性用于变体。该产品是一个可变产品,有两个属性用于“颜色”和“样式”的变化。我想针对任何具有要从优惠券中排除的样式属性的产品。如果只选择了一个“样式”属性,我想拒绝优惠券,如何更新此代码?后来我把这个改成了“风格”——是或否(术语)。如果产品仅为“样式”属性选择了变体“是”,我想拒绝优惠券。我尝试删除阵列,但无法找到它。非常感谢您的帮助。我尝试过这个,但它使优惠券对那些不在数组中的人无效。因此,我的分类法是
finish
,我的数组是
“装箱”、“拉伸”
,但如果我向购物车中添加了第三个产品,而该产品不在此数组中,优惠券将不会应用于该“有效”产品。请你能帮帮我吗@loictheaztec@MitchellK这是正常的,因为这是本代码的目的:如果任何产品变体在购物车中有“漩涡”或“圆形”术语表示“pa_style”属性,则会使优惠券无效,即使有其他项目没有。此优惠券不能应用于其他项目,因为这适用于购物车百分比和购物车固定等全球优惠券类型。是否有办法解决此问题?我正在努力实现@MitchellK的目标。允许将优惠券应用于购物车中不受此功能限制的其他产品。这些是基于百分比的优惠券,但我需要它们对购物车中每个合格产品打15%的折扣,或者购物车总额(不包括不合格的产品金额)…有可能吗?我在这里尝试了这个答案,但它仍然拒绝了所有-我一直在使用这个。术语_slug的拼写必须与属性下“值”部分中的拼写完全相同。因此,它将当前优惠券应用于与您定义的任何slug都不匹配的所有项目。当客户添加不适用于优惠券的其他项目时,优惠券将从所有项目中删除。这可能不是最好的解决办法,我相信会有更聪明、更复杂的方法来处理这个问题。对于我的需要,我发现它正是我需要的,我想要从折扣中排除的属性的术语slug就是“是”。分类法是“pa_定制”,变体是“是”或“否”。所以,拼写不是问题。我很想知道你是怎么做到的。我真的很想让这些优惠券为购物车中的其他产品工作,或者购物车总计,如果购物车中的产品不包含“是”变量。