Last active
December 22, 2022 21:27
-
-
Save kalbac/a159e1be6831df624516e52b50201892 to your computer and use it in GitHub Desktop.
Делаем стоимость доставки СДЭК бесплатной при использовании купона
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| /* | |
| * Сниппет предназначен для создании бесплатной доставки СДЭК. | |
| * Ссылка на плагин https://woodev.ru/downloads/wc-edostavka-integration | |
| * Пример кода работает для тарифа СДЭК "Посылка склад-склад". Однако можно применить к любому тарифу, просто заменив ID метода в названии хука woocommerce_edostavka_{ID_метода_СДЭК}_rate | |
| * По вопросам обращайтесь на емайл [email protected] | |
| * Нижеприведённый код необходимо вставить в файл functions.php вашей активной темы. | |
| * Автор кода не несёт отвественности в случае возникновеня каких либо проблем при использовании данного кода. | |
| * Любые изменения которые вы вносите в код вашего сайта, вы делаете это на свой страх и риск. | |
| * Код представлен для ознакомления как есть. Вы должны понимать что с этим кодом нужно делать. Если нет то обатитесь к профессионалам. | |
| */ | |
| add_filter( 'woocommerce_edostavka_edostavka-package-stock_rate', 'custom_make_edostavka_free_shipping_by_cupon', 10, 2 ); | |
| function custom_make_edostavka_free_shipping_by_cupon( $rate, $instance_id ) { | |
| $has_coupon = false; | |
| $coupons = WC()->cart->get_coupons(); | |
| if ( $coupons ) { | |
| foreach ( $coupons as $code => $coupon ) { | |
| if ( $coupon->is_valid() && $coupon->get_free_shipping() ) { | |
| $has_coupon = true; | |
| break; | |
| } | |
| } | |
| } | |
| $need_instance_id = 0;//Это ID экземпляра нужного вам метода. Поменяйте на своё значение. | |
| if( $instance_id == $need_instance_id && $has_coupon ) { | |
| /* | |
| * Условие сработало. Т.е. ID экзепляра именно тот, что нам нужен, а так же у нас точно применён купон на бесплатную доставку | |
| */ | |
| $rate['cost'] = 0; //Устанавливаем нулевую стоимость для данного метода доставки СДЭК | |
| } | |
| return $rate; | |
| } | |
| //Для версии плагина СДЭК 2.2.х.х код будет таким: | |
| add_filter( 'wc_edostavka_delivery_rates_item', function( $rate_atts, $rate, $package, $shipping_class ) { | |
| $coupons = WC()->cart->get_coupons(); | |
| $need_instance_id = 0;//Это ID экземпляра нужного вам метода. Поменяйте на своё значение. | |
| $need_tariff_code = 136;//Это ID нужного вам тарифа. 136 - это Посылка склад-склад | |
| if( $shipping_class->get_instance_id() == $need_instance_id && $shipping_class->get_option( 'tariff' ) == $need_tariff_code && $coupons ) { | |
| $has_coupon = false; | |
| foreach ( $coupons as $code => $coupon ) { | |
| if ( $coupon->is_valid() && $coupon->get_free_shipping() ) { | |
| $has_coupon = true; | |
| break; | |
| } | |
| } | |
| if( $has_coupon ) { | |
| $rate_atts['cost'] = 0; | |
| } | |
| } | |
| return $rate_atts; | |
| }, 10, 4 ); | |
| ?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment