Попробуйте следующее, где:
- в первой функции вы определите массив идентификаторов товаров, которые будут исключены из купонов.
- вторая функция удалит включенные идентификаторы товаровиз массива исключенных идентификаторов продукта и установит его в купоне при сохранении.
Код:
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 вашей активной дочерней темы(или активная тема).Должно работать.