Php 自动填充WooCommerce优惠券中的排除产品

Php 自动填充WooCommerce优惠券中的排除产品,php,function,woocommerce,coupon,wp-admin,Php,Function,Woocommerce,Coupon,Wp Admin,我正在寻找一种方法,不必根据优惠券应用的产品ID手动从优惠券中排除产品。因此,构建商店中所有产品ID的数组,然后填充排除的产品字段减去优惠券应用的产品ID 我本想使用“”应答对其进行一些更改,但由于我不熟悉WP/WC查询和函数,我还没有得到一些功能。尝试以下方法,其中: 您将在第一个函数中定义要从优惠券中排除的产品ID数组 第二个功能将从排除的产品ID数组中删除包含的产品ID,并在保存时在优惠券中设置该ID 守则: function my_coupons_excl_product_ids()

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


我本想使用“”应答对其进行一些更改,但由于我不熟悉WP/WC查询和函数,我还没有得到一些功能。

尝试以下方法,其中:

  • 您将在第一个函数中定义要从优惠券中排除的产品ID数组
  • 第二个功能将从排除的产品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填写优惠券上的排除产品字段。显然,这意味着必须对每个循环或某些东西进行一次比较,以将优惠券应用到的一个或多个产品ID与整个产品列表进行比较。