Soporte » Comunidad » Tu WordPress » woocommerce / contact form 7 / modificar precio

  • Resuelto suncubuso

    (@suncubuso)


    Hola
    Tengo un ecommerce con woocommerce, donde cada producto contiene un formulario, creado con Contact Form 7.
    En uno de estos formularios,, cuando el usuario checkea un radio button, me gustaría cambiar el precio del producto en el carrito.
    No encuentro la manera de enviar ese valor y sumarselo al carrito.
    Os dejo la url: https://dgtonline.es/producto/solicitar-carnet-internacional/
    En el formulario estaría así:
    ¿La dirección de envío es al extranjero?: [envioInternacional]
    ¿Alguién me puede ayudar?

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 6 respuestas - de la 1 a la 6 (de un total de 6)
  • Iniciador del debate suncubuso

    (@suncubuso)

    He creado un producto con el importe de 24,20€, que es lo que se le sumaría al carrito.

    Una opción es que cuando se checkee la opción de envio internacional se envíe el parámetro (get) para añadir al carrito de esta manera: https://dgtonline.es/carrito/?add-to-cart=1526

    pero no se como implementar la condición dentro de contact form

    A lo mejor me estoy complicando….

    saludos

    Moderador Jose Luis

    (@jose64)

    Hola.

    Bienvenida al foro de soporte. Efectivamente, te estás complicando. Puedes solicitar todos los datos con campos personalizados y añadirle a la opción de envío internacional un precio. En el repositorio tienes algún plugin que te puede ayudar, por ejemplo:

    Advanced Product Fields (Product Addons) for WooCommerce

    Product Options and Price Calculation Formulas for WooCommerce – Uni CPO

    Estos plugins te permiten poner un campo adicional con un precio con la versión del repositorio.

    Comenta si tienes alguna duda y, por favor, recuerda marcar el debate como resuelto, así nos ayudas a mantener el foro al día.

    Iniciador del debate suncubuso

    (@suncubuso)

    Hola,

    Ya había visto esos plugins, pero quería saber si puedo hacerlo por código o con algún plugin que pueda seguir usando contact form.

    un problema que me surge con estos plugins es que tengo un campo donde el usuario debe firmar y estos plugins no me dan la opción.

    La idea es que cuando se checkee un checkbox en el formulario de contact form (dentro del producto) se cumpla, o bien se le sume el importe al precio del producto donde esta el formulario, o bien se ñada automáticamente otro producto (creado previamente) al carrito con ese importe.

    Con los campos condicionales de contact form solo puedo mostrar/ocultar campos…¿no es posible hacer nada más?

    No se si es posible…

    Moderador Jose Luis

    (@jose64)

    En el repositorio no he visto ningún plugin que permita hacer lo que quieres, tendrías que consultarlo con un profesional.

    Para poder firmar con Contact Form 7 estás usando un plugin adicional, no es uno de los campos estándar del formulario, si cambias ese plugin por uno de firma en WooCommerce ya puedes hacerlo directamente, en el repositorio tienes alguno:

    WooCommerce Digital Signature

    Order Signature for WooCommerce

    Hi Guys!
    If this is regarding Order Signature for WooCommerce, we would be happy to help if you have any concerns.
    Thank you!

    Iniciador del debate suncubuso

    (@suncubuso)

    Buenas,
    Al final he conseguido lo que quería sin instalar más plugins ni rehacer de nuevo los formularios, añadiendo el siguiente código a mi functions.php:

    function redirigirCarrito() {
    ?>
        <script type="text/javascript">
            document.addEventListener( 'wpcf7mailsent', function( event ) {
               
                switch(event.detail.contactFormId){
                    
                    //OPCION 1
                    case 100:
                        window.location.href = "https://xxx.es/carrito/?add-to-cart=1070";
                        break;
                    //OPCION 2
                    case 119:
                        //con la opción del check en Si
                        if( getRating( "envioInternacional") == "Sí" ) {
                            window.location.href = "https://xxx.es/carrito/?add-to-cart=1526";
                            
                        }else{
                            //sin envíoa al extranjero
                            window.location.href = "https://xxx.es/carrito/?add-to-cart=1166";
                        }
                       
                        break;
                }
                
            }, false );
    
            //función que recoge la selección del radio button
            function getRating(envioInternacional) {
            var ratings = document.getElementsByName( envioInternacional );
    
            for( var r in ratings ) {
                if( ratings[r].checked )
                return ratings[r].value;
            }
            
            return null;
            }
        </script>
    <?php
Viendo 6 respuestas - de la 1 a la 6 (de un total de 6)
  • Debes estar registrado para responder a este debate.