首页 > 解决方案 > 自动填充 WooCommerce 优惠券中排除的产品

问题描述

我正在寻找一种方法,不必根据优惠券应适用的产品 ID 从优惠券中手动排除产品。因此,在商店中构建一个包含所有产品 ID 的数组,然后填充排除的产品字段减去优惠券适用的产品 ID(或多个 ID)。

我正在考虑使用禁用优惠券和折扣从应用到购物车中定义的 Woocommerce 产品的答案对其进行一些更改,但由于我是 WP/WC 查询和功能的新手,我还没有得到一些功能。

标签: phpfunctionwoocommercecouponwp-admin

解决方案


尝试以下操作,其中:

  • 您将在第一个函数中定义要从优惠券中排除的产品 ID 数组。
  • 第二个函数将从排除的产品 ID 数组中删除包含的产品 ID,并在保存时将其设置在优惠券中。

编码:

function my_coupons_excl_product_ids() {
    // HERE set in the array your product IDs to be excluded
    return array(17, 37, 52, 123, 124, 152, 154);
}

// On coupon save
add_action('woocommerce_coupon_options_save', 'action_coupon_options_save_callback', 10, 2);
function action_coupon_options_save_callback( $post_id, $coupon ) {
    $included_ids = (array) $coupon->get_product_ids();

    if( size_of($included_ids) > 0 ) {
        $excl_product_ids = array_diff( my_coupons_excl_product_ids(), $included_ids ); // Get the difference
        $coupon->set_excluded_product_ids( array_filter( array_map( 'intval', (array) $excl_product_ids ) ) );
        $coupon->save();
    }
}

代码位于您的活动子主题(或活动主题)的 function.php 文件中。它应该有效。


推荐阅读