id = 'url_coupons'; $this->short_desc = __( 'URL Coupons', 'woocommerce-jetpack' ); $this->desc = __( 'WooCommerce URL coupons.', 'woocommerce-jetpack' ); $this->link_slug = 'woocommerce-url-coupons'; parent::__construct(); if ( $this->is_enabled() ) { add_action( 'wp_loaded', array( $this, 'maybe_apply_url_coupon' ), PHP_INT_MAX ); } } /** * get_redirect_url. * * @version 2.9.1 * @since 2.9.1 */ function get_redirect_url( $arg_key ) { switch ( apply_filters( 'booster_option', 'no', get_option( 'wcj_url_coupons_redirect', 'no' ) ) ) { case 'cart': return wc_get_cart_url(); case 'checkout': return wc_get_checkout_url(); case 'custom': return get_option( 'wcj_url_coupons_redirect_custom_url', '' ); default: // 'no' return remove_query_arg( $arg_key ); } } /** * maybe_add_products_to_cart. * * @version 3.6.0 * @since 2.9.1 * @todo (maybe) check if coupon is valid */ function maybe_add_products_to_cart( $coupon_code ) { if ( 'no' === apply_filters( 'booster_option', 'no', get_option( 'wcj_url_coupons_fixed_product_discount_add_products', 'no' ) ) ) { return false; } // Coupons are globally disabled. if ( ! wc_coupons_enabled() ) { return false; } // Sanitize coupon code. $coupon_code = wc_format_coupon_code( $coupon_code ); // Get the coupon. $the_coupon = new WC_Coupon( $coupon_code ); if ( 'fixed_product' === $the_coupon->get_discount_type() ) { $product_ids = $the_coupon->get_product_ids(); if ( ! empty( $product_ids ) ) { foreach ( $product_ids as $product_id ) { if ( ! wcj_is_product_in_cart( $product_id ) ) { WC()->cart->add_to_cart( $product_id ); } } } } } /** * maybe_apply_url_coupon. * * @version 2.9.1 * @since 2.7.0 * @todo (maybe) options to add products to cart with query arg * @todo (maybe) if ( ! WC()->cart->has_discount( $coupon_code ) ) {} */ function maybe_apply_url_coupon() { $arg_key = get_option( 'wcj_url_coupons_key', 'wcj_apply_coupon' ); if ( isset( $_GET[ $arg_key ] ) && '' != $_GET[ $arg_key ] ) { $coupon_code = sanitize_text_field( $_GET[ $arg_key ] ); $this->maybe_add_products_to_cart( $coupon_code ); WC()->cart->add_discount( $coupon_code ); wp_safe_redirect( $this->get_redirect_url( $arg_key ) ); exit; } } } endif; return new WCJ_URL_Coupons();