【问题标题】:Auto populate excluded products in WooCommerce coupons自动填充 WooCommerce 优惠券中排除的产品
【发布时间】:2019-04-15 17:00:35
【问题描述】:

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

我正在考虑使用 "Disable coupons & discounts from applying to defined Woocommerce products in cart" 答案对其进行一些更改,但是由于我是 WP/WC 查询和函数的新手,所以我还没有得到一些实用的东西。

【问题讨论】:

    标签: php function woocommerce coupon wp-admin


    【解决方案1】:

    尝试以下方法,其中:

    • 您将在第一个函数中定义要从优惠券中排除的产品 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 文件中。它应该可以工作。

    【讨论】:

    • 感谢您的回答。但是,我一直在寻找更自动化的东西。问题是被排除的产品可能因优惠券而异。因此,我希望有一种动态方式将所有产品 ID 返回到一个数组,然后确定哪些产品不应该被排除,然后用剩余的产品 ID 填写优惠券上的排除产品字段。显然,这意味着必须执行 for each 循环或其他操作来比较优惠券适用的一个或多个产品 ID 与整个产品列表。
    猜你喜欢
    • 1970-01-01
    • 2021-12-28
    • 2021-04-13
    • 2017-12-29
    • 1970-01-01
    • 2021-01-21
    • 2019-01-14
    • 2021-11-06
    • 2018-09-19
    相关资源
    最近更新 更多