Применять купон программно в Woocommerce
В Woocommerce япытаюсь найти способ применить скидку 10% ко всему клиентуЗаказ, если вес в корзине превышает 100 фунтов. Я'Это один из способов достижения этого. Для следующего шага яЯ ищу способ программно применить код купона через action / hook через functions.php.
Похоже, что я могу использовать функцию woocommerce_ajax_apply_coupon, чтобы сделать это (http://docs.woothemes.com/wc-apidocs/function-woocommerce_ajax_apply_coupon.html ) но я не уверен, как его использовать.
Пока яя изменил cart.php, чтобы получить общий вес всех товаров в корзине, яМы создали купон, который применяет скидку (если введено вручную), и я 'Мы добавили некоторый код в functions.php, чтобы проверить вес и отобразить сообщение для пользователя.
РЕДАКТИРОВАТЬ: Частичный код удален, завершенный код включен в решение ниже.
Спасибо за руководство Френей. Вот's рабочий конечный результат, который успешно применяет купон на скидку при выполнении условия, а также удаляет его при его выполнениис больше не встречались:
/* Mod: 10% Discount for weight greater than 100 lbs
Works with code added to child theme: woocommerce/cart/cart.php lines 13 - 14: which gets $total_weight of cart:
global $total_weight;
$total_weight = $woocommerce->cart->cart_contents_weight;
*/
add_action('woocommerce_before_cart_table', 'discount_when_weight_greater_than_100');
function discount_when_weight_greater_than_100( ) {
global $woocommerce;
global $total_weight;
if( $total_weight > 100 ) {
$coupon_code = '999';
if (!$woocommerce->cart->add_discount( sanitize_text_field( $coupon_code ))) {
$woocommerce->show_messages();
}
echo '<strong>Your order is over 100 lbs so a 10% Discount has been Applied!</strong> Your total order weight is <strong>' . $total_weight . '</strong> lbs.';
}
}
/* Mod: Remove 10% Discount for weight less than or equal to 100 lbs */
add_action('woocommerce_before_cart_table', 'remove_coupon_if_weight_100_or_less');
function remove_coupon_if_weight_100_or_less( ) {
global $woocommerce;
global $total_weight;
if( $total_weight cart->get_applied_coupons();
if (!$woocommerce->cart->remove_coupons( sanitize_text_field( $coupon_code ))) {
$woocommerce->show_messages();
}
$woocommerce->cart->calculate_totals();
}
}