es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Generar un cupón de descuento de WooCommerce después de enviar el formulario de gravedad.

Quiero que un usuario ingrese su correo electrónico en un formulario de gravedad y después de enviarlo se le envíe un código de cupón único que caduca después de dos semanas. He reunido código de algunas otras soluciones y tengo éxito en crear el código único. Pero no puedo hacer que se cree el cupón en woocommerce… No siendo un maestro de PHP, sé que me falta algo obvio.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Generación de códigos únicos de cupones de Gravity Form y integración con Woocommerce

    Para hacer que un usuario reciba un código de cupón único por correo electrónico después de enviar su correo electrónico en un Gravity Form, y hacer que ese código de cupón caduque después de dos semanas, necesitaremos generar un código único y crear un cupón en Woocommerce usando PHP.

    Aquí está el código que puede hacer la tarea:

    “`php
    //* Define opciones/constantes
    define( ‘ENGWP_FORM_ID’, 276 ); // El ID del formulario (entero)
    define( ‘ENGWP_SOURCE_FIELD_ID’, 2 ); // El ID del campo del formulario que contiene el código (entero)
    define( ‘ENGWP_CODE_LENGTH’, 12 ); // Longitud del código (entero)
    define( ‘ENGWP_CODE_CHARS’, ‘1234567890QWERTYUIOPASDFGHJKLZXCVBNM’ ); // Caracteres disponibles para el código; por defecto 0-9 y letras mayúsculas (cadena)
    define( ‘ENGWP_CODE_PREFIX’, ’17-‘ ); // Prefijo personalizado para el código (cadena); por defecto vacío
    define( ‘ENGWP_DISCOUNT_TYPE’, ‘percent’ ); // ‘flat’ o ‘percent’ (cadena)
    define( ‘ENGWP_DISCOUNT_AMOUNT’, 10 ); // Valor del descuento (entero); $ si ‘type’ es ‘flat’ y % si ‘type’ es ‘percent’
    define( ‘ENGWP_MAX_USES’, 1 ); // Número máximo de usos por cliente (entero)
    define( ‘ENGWP_MIN_PRICE’, 0 ); // Precio mínimo para aplicar el descuento (entero); por defecto ninguno
    define( ‘ENGWP_PRODUCT_REQS’, ” ); // Una lista separada por comas de IDs de productos (cadena) a los que se aplican los cupones
    define( ‘ENGWP_REQS_CONDITION’, ” ); // Cómo aplicar el descuento a esos productos (cadena); acepta ‘cualquiera’ (al menos un ID de producto debe estar en el carrito) o ‘todos’ (todos los productos deben estar en el carrito)
    define( ‘ENGWP_SINGLE_USE’, ‘use_once’ ); // Si los cupones generados pueden ser utilizados más de una vez por un cliente; por defecto se establece para uso único pero se puede establecer en false (booleano) para permitir múltiples usos
    define( ‘ENGWP_EXCLUDE_PRODUCTS’, ” ); // Una lista separada por comas de IDs de productos (cadena) que quedan excluidos de la aplicabilidad del descuento

    $start_date = ”; # sin fecha
    // $start_date = ’01/01/1900′; # fecha estática
    // $start_date = date( ‘m/d/Y’, strtotime(“yesterday”) );

    $exp_date = date( ‘m/d/Y’, strtotime(“+14 days”) );
    // $exp_date = ’01/01/1900′; # fecha estática
    // $exp_date = ”; # sin fecha

    class GW_Crear_Cupón {

    public function __construct( $args = array() ) {

    // establecer nuestros argumentos predeterminados, analizar los argumentos proporcionados y almacenarlos para su uso en toda la clase
    $this->_args = wp_parse_args( $args, array(
    ‘form_id’ => false,
    ‘source_field_id’ => false,
    ‘plugin’ => ‘wc’,
    ‘amount’ => 0,
    ‘type’ => ”,
    ‘meta’ => array()
    ) );

    // hacer una comprobación de versión en la iniciación para asegurarse de que si GF va a ser cargado, ya está cargado
    add_action( ‘init’, array( $this, ‘init’ ) );

    }

    public function init() {

    // asegurarnos de que estamos ejecutando la versión mínima requerida de Gravity Forms
    if( ! property_exists( ‘GFCommon’, ‘version’ ) || ! version_compare( GFCommon::$version, ‘1.8’, ‘>=’ ) ) {
    return;
    }

    add_action( ‘gform_after_submission’, array( $this, ‘create_coupon’ ), 10, 2 );

    }

    public function create_coupon( $entry, $form ) {

    if( ! $this->is_applicable_form( $form ) ) {
    return;
    }

    $coupon_code = rgar( $entry, $this->_args[‘source_field_id’] );
    $amount = $this->_args[‘amount’];
    $type = $this->_args[‘type’];

    $plugin_func = array( $this, sprintf( ‘create_coupon_%s’, $this->_args[‘plugin’] ) );

    if( is_callable( $plugin_func ) ) {
    call_user_func( $plugin_func, $coupon_code, $amount, $type );
    }

    }
    public function create_coupon_wc( $coupon_code, $amount, $type ) {

    $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 );

    $meta = wp_parse_args( $this->_args[‘meta’], array(
    ‘discount_type’ => $type,
    ‘coupon_amount’ => $amount,
    ‘individual_use’ => ‘yes’,
    ‘product_ids’ => ”,
    ‘exclude_product_ids’ => ”,
    ‘usage_limit’ => ‘1’,
    ‘expiry_date’ => ”,
    ‘apply_before_tax’ => ‘no’,
    ‘free_shipping’ => ‘no’,
    ‘exclude_sale_items’ => ‘no’,
    ‘product_categories’ => ”,
    ‘exclude_product_categories’ => ”,
    ‘minimum_amount’ => ”,
    ‘customer_email’ => ”
    ) );

    foreach( $meta as $meta_key => $meta_value ) {
    update_post_meta( $new_coupon_id, $meta_key, $meta_value );
    }
    }
    public function create_coupon_edd( $coupon_code, $amount, $type ) {

    if( ! is_callable(

Comments are closed.