Aplicar un cupón programáticamente en Woocommerce

En Woocommerce, estoy tratando de encontrar una manera de aplicar un descuento del 10% a un pedido completo de un cliente si el peso en el carrito supera las 100 lb. Estoy en parte para lograr esto. Para el siguiente paso, estoy buscando una manera de aplicar mediante programación un código de cupón a través de action / hook a functions.php.

Parece que puedo usar la función woocommerce_ajax_apply_coupon para hacer esto (http://docs.woothemes.com/wc-apidocs/function-woocommerce_ajax_apply_coupon.html ) pero no estoy seguro de cómo usarlo.

Hasta ahora he modificado cart.php para obtener el peso total de todos los productos en el carrito, he creado un cupón que aplica el descuento (si se ingresa manualmente) y agregué algo de código a functions.php para verificar El peso y mostrar un mensaje al usuario.

EDITAR: Código parcial eliminado, código completado incluido en la solución a continuación.

Gracias por la orientación Freney. Aquí está el resultado final de trabajo que aplica con éxito el cupón de descuento cuando se cumple la condición y también lo elimina cuando ya no se cumple:

/* 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 '<div class="woocommerce_message"><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.</div>';
    }
}

/* 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 <= 100 ) {
        $coupon_code = '999';
        $woocommerce->cart->get_applied_coupons();
        if (!$woocommerce->cart->remove_coupons( sanitize_text_field( $coupon_code ))) {
            $woocommerce->show_messages();
        }
        $woocommerce->cart->calculate_totals();
    }
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta