php - 自动填充 WooCommerce 优惠券中排除的产品
问题描述
我正在寻找一种方法,不必根据优惠券应适用的产品 ID 从优惠券中手动排除产品。因此,在商店中构建一个包含所有产品 ID 的数组,然后填充排除的产品字段减去优惠券适用的产品 ID(或多个 ID)。
我正在考虑使用“禁用优惠券和折扣从应用到购物车中定义的 Woocommerce 产品”的答案对其进行一些更改,但由于我是 WP/WC 查询和功能的新手,我还没有得到一些功能。
解决方案
尝试以下操作,其中:
- 您将在第一个函数中定义要从优惠券中排除的产品 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 文件中。它应该有效。
推荐阅读
- r - 获得几个国家最低的行政级别
- sql - Sqlite 名称和使用临时表达式
- windows - VBScript 远程执行 Microsoft Excel DCOM 失败
- azure-devops - 在生成的工件中仅包含一组文件夹
- eclipse - 在 Eclipse/STS 的 Spring Boot 中使用嵌入式 Tomcat 运行 Spring MVC
- opengl - 如何比较 GLSL 脚本中的浮点数?
- r - 对多个字符串使用 deparse(substitute)
- laravel - 如何根据主表上的列验证主表和外部表上的唯一字段
- magento2 - 获取类别和子类别作为树显示
- python - 如何检查 Reddit 帖子是否仅包含图像而不包含其他内容?