WooCommerce: Cómo ocultar campos en el pago para productos virtuales

Contéstame a esta duda: ¿hace falta preguntar por la calle, código postal, ciudad y país para productos virtuales en una tienda online?

Si la respuesta es que no, ¿por qué WooCommerce por defecto muestra todos esos campos y más aunque en el carrito solo haya un producto virtual, que no hay que enviar a ninguna parte?

¿No complicamos así la venta, preguntando por cosas que cualquier cliente medio despierto se dará cuenta de que es innecesario? ¿No transmite esto una mala sensación de nuestro Ecommerce, por pedir más de lo necesario?

Me refiero a cosas como pedir todo esto cuando estás comprando un producto virtual…

Es más ¿cómo encaja esta sobredosis de petición de información con los principios de las leyes de protección de la privacidad como el RGPD?

Si estás conmigo en que es excesivo, abre ahora mismo el archivo functions.php o tu plugin para personalizar cosas y añade este código:

/* Quitar campos innecesarios si el producto es virtual */
add_filter( 'woocommerce_checkout_fields' , 'ayudawp_pago_virtual_simple' );
function ayudawp_pago_virtual_simple( $fields ) {
     
    $only_virtual = true;
     
    foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        // Comprobamos si hay productos que no sean virtuales
        if ( ! $cart_item['data']->is_virtual() ) $only_virtual = false; 
    }
     
    if( $only_virtual ) {
        unset($fields['billing']['billing_company']);
        unset($fields['billing']['billing_address_1']);
        unset($fields['billing']['billing_address_2']);
        unset($fields['billing']['billing_city']);
        unset($fields['billing']['billing_postcode']);
        unset($fields['billing']['billing_country']);
        unset($fields['billing']['billing_state']);
        unset($fields['billing']['billing_phone']);
        add_filter( 'woocommerce_enable_order_notes_field', '__return_false' );
    }
     
    return $fields;
}

Guarda tus cambios para ver lo liviana, razonable, respetuosa con la privacidad, efectiva que queda tu página de finalizar compra:

¿Que quieres seguir pidiendo el teléfono por algún motivo?, pues borras la línea que hace unset del billing_phone, ya lo personalizas a tu gusto.

¡Menos preguntar y más vender! 😀

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(6 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

11 comentarios en “WooCommerce: Cómo ocultar campos en el pago para productos virtuales”

  1. Fernando, y ¿Qué hay con lo de identificar al usuario para saber qué impuestos cobrar, sí por ejemplo es de otro estado miembro de la Unión Europea? En teoría hacen falta varios registros no contradictorios, como la IP y su dirección de facturación, si no estoy equivocado. Artículo muy interesante, como siempre.

      1. Claro, aunque tengas pedir algo más, el poder dejar el formulario mucho más ligero y de una forma tan sencilla, creo que está fenomenal. Gracias por compartirlo.

  2. Humm. Lo veo muy interesante para productos gratuitos, en los que no sea necesario emitir una factura. Entiendo que si hay un pago de por medio se tendrá que pedir datos de facturación, pero si el artículo es gratuito, entonces no. ¿Se podría hacer solo para productos gratuitos?.
    Me gustan mucho estos artículos.
    Gracias Fernando por todo.

  3. Antonio Ortiz

    Hola Fernando.

    ¿Se podrían usar para productos no virtuales? En mi caso tengo un producto virtual, pero no puedo marcarlo como virtual pues tenía que cargar unos gastos de gestión y lo aplico como gastos de envío (cambiandole el nombre). No encontré una forma rápida de hacerlo.

    No puedo aplicarlo a todos, pues también tengo productos físicos.

    Gracias por la ayuda.

  4. Buenas tardes, soy principiante en esto de woocommerce, estoy tratando de implementar una pasarela de pago en mi página, pero usando gestiono el pago en woocommerce no se como hacer para que el cliente al hacer clic en el botón comprar lo lleva al chekout

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido