Descargas ilimitadas y Licencias Originales

Suscríbete o Inicia Sesión y descarga todos los recursos que quieras sin coste adicional. Todos los Plugins y Themes de WordPress en un clic. Además podrás acceder a Licencias Originales y API Keys.

Genera automáticamente un cupón de descuento exclusivo para cada cliente al completar su compra

Este fragmento de código realiza automáticamente la creación de un cupón de descuento único y de un solo uso cada vez que un cliente finaliza su compra. Además, permite definir un período de validez en días para que el cupón expire automáticamente después de ese lapso.

Para configurarlo, sigue estos pasos:

  1. Define el tipo de descuento a aplicar. Por defecto, está configurado en porcentaje (‘percent’), pero si prefieres un descuento fijo, reemplaza ‘percent’ por ‘fixed_cart’.
  2. Establece la cantidad del descuento reemplazando el número 30 con la cifra que desees. Por ejemplo, si colocas 10 y el tipo de descuento es en porcentaje, esto significa que el cupón aplicará un 10% de descuento.
  3. Indica la validez del cupón expresada en días. La configuración predeterminada es de 12 días, pero si deseas ajustar la validez, simplemente reemplaza el 12 con el número de días que desees.

Mostrar Cupon Descuento Para Proxima Compra Woocommerce 1024X631 1 -

// Crea un cupón descuento único para cada cliente al terminar su compra
if ( in_array( 'woocommerce/woocommerce.php', get_option( 'active_plugins' ) ) ){

    add_filter( 'woocommerce_thankyou_order_received_text', 'create_automatic_coupon_only_for_this_customer', 99, 2 );
    function create_automatic_coupon_only_for_this_customer( $message, $order ){

        // Configuración del cupón
        $discount_type = 'percent'; // Aquí defines el tipo de descuento que aplica este cupón. Por defecto está configurado en porcentaje 'percent', para 	descuento fijo usa 'fixed_cart'
        $amount = 30; //Aquí defines la cantidad de descuento asociada a este cupón
        $expiration = 12; // Aquí debes indicar la validez del cupón en días

        // Elimina cupones caducados y comprueba si ya existe un cupón asociado a este pedido
        $coupon_id = clean_expired_coupons_and_check_coupons_order( $order );

        	$order_key = apply_filters( 'woocommerce_thankyou_order_key', empty( $_GET['key'] ) ? '' : wc_clean( $_GET['key'] ) );

        	if ( $order->get_id() > 0 ) {
    
        	    	// Comprueba que el pedido existe y que todavía no hay cupón asociado al pedido
        	    	if ( $order->get_order_key() == $order_key ) {
            
                if ( !$coupon_id ) {
                    
        				//Crea un código de cupón único para este cliente
                    $customer_email = $order->get_billing_email();
                    $customer_email = explode( '@', $customer_email );
                    $customer_email = $customer_email[0];
                    $sufix = date( 'Hms' );
                
                    // Calcula la fecha de caducidad
                    $date = date( 'Y-m-d' );
                    $expiry_date = strtotime( $date .'+ '. $expiration .' days' );
                    $expiry_date = date( 'Y-m-d', $expiry_date );
                
                    $args = array(
                        'coupon_code' 			=> $customer_email.'_'.$sufix,
                        'discount_type' 		=> $discount_type,
                        'amount' 			=> $amount,
                        'individual_use' 		=> 'yes',
                        'usage_limit' 			=> 1,
                        'product_ids' 			=> '',
                        'exclude_product_ids' 		=> '',
                        'expiry_date' 			=> $expiry_date,
                        'apply_before_tax' 		=> '',
                        'free_shipping' 		=> 'no',
                    );
                
                    $coupon_code = strtoupper( $args[ 'coupon_code' ] );
                
                    $coupon = array(
                        'post_title' => $coupon_code,
                        'post_content' => '',
                        'post_status' => 'publish',
                        'post_author' => 1,
                        'post_type'		=> 'shop_coupon'
                    );
                
                    $new_coupon_id = wp_insert_post( $coupon );
                
                    update_post_meta( $new_coupon_id, 'discount_type', $args[ 'discount_type' ] );
                    update_post_meta( $new_coupon_id, 'coupon_amount', $args[ 'amount' ] );
                    update_post_meta( $new_coupon_id, 'individual_use', $args[ 'individual_use' ] );
                    update_post_meta( $new_coupon_id, 'product_ids', $args[ 'product_ids' ] );
                    update_post_meta( $new_coupon_id, 'exclude_product_ids', $args[ 'exclude_product_ids' ] );
                    update_post_meta( $new_coupon_id, 'usage_limit', $args[ 'usage_limit' ] );
                    update_post_meta( $new_coupon_id, 'expiry_date', $args[ 'expiry_date' ] );
                    update_post_meta( $new_coupon_id, 'apply_before_tax', $args[ 'apply_before_tax' ] );
                    update_post_meta( $new_coupon_id, 'free_shipping', $args[ 'free_shipping' ] );
                    update_post_meta( $new_coupon_id, 'order-id', $order->get_id() );
                
                    if ( is_wp_error( $new_coupon_id ) ){
                
                        return false;
                    }
                }else{

                    $coupon = get_post( $coupon_id );
                    $coupon_code = $coupon->post_title;
                }
        
                // Muestra el cupón en la página de finalizar compra
                $message .= get_coupon_discount_for_the_next_purchase( $coupon_code, $expiration, $amount, $discount_type );
        	    	}
        	}

        	return $message;
    }
    
    function get_coupon_discount_for_the_next_purchase( $coupon_code, $expiration, $amount, $discount_type ){
    
        $discount = $amount;
        $discount .= 'percent' == $discount_type? '%' : get_woocommerce_currency();
        ob_start();
        ?>
        <div style="margin: 0 0 3.5em; text-align:center;">
            <p>Para agradecerte tu confianza en nosotros, te hemos preparado un <strong>cupón de descuento del <?php echo $discount; ?> para tu próxima compra:</strong></p>
            <h3 style="text-align:center;">TU DESCUENTO</h3>
            <div style="text-align: center; font-weight: bold; border: 2px #c7c7c7; border-style: dashed; padding: 13px; width: 50%; margin: 10px auto;"><?php echo $coupon_code;?></div>
            <p><strong>El cupón tiene una validez de <?php echo $expiration; ?> días</strong>. Pero no lo dejes demasiado porque una vez transcurrido ese periodo, el cupón ya no será valido.</p>
        </div>
        <?php
        $content = ob_get_contents();
        ob_end_clean();

        return $content;
    }

    function clean_expired_coupons_and_check_coupons_order( $order = false ){
        $coupon_exist = false;

        if ( isset( $order ) ) {
            
            $arg = array(
                'post_type' => array( 'shop_coupon' ),
                    'meta_key' => 'order-id'
            );

            $auto_coupon_list = new WP_Query( $arg );

            foreach ( $auto_coupon_list->posts as $key => $coupon ) {
                
                // Elimina cupones caducados
                $coupon_expiry_date = get_post_meta( $coupon->ID, 'expiry_date', true );
                $today_date = date( 'Y-m-d' );

                if ( !empty( $coupon_expiry_date ) && ( $today_date > $coupon_expiry_date ) ) {
                    
                    wp_delete_post( $coupon->ID );
                    continue;
                }

                // Busca un cupón automático asociado a este pedido
                $order_id_coupon_vinculated = get_post_meta( $coupon->ID, 'order-id', true );
                if ( !$coupon_exist && ( $order_id_coupon_vinculated == $order->get_id() ) ) {

                    $coupon_exist = $coupon->ID;
                }
            }
        }

        return $coupon_exist;
    }
}

 

Productos destacados