Las opciones de envío eficientes son una parte vital de cualquier tienda de WooCommerce exitosa, pero a veces simplificar la experiencia de pago puede mejorar significativamente la satisfacción del usuario.
Por ocultar el formulario de la dirección de envío cuando se selecciona la recolección localproporciona un flujo de pago más limpio e intuitivo, reduciendo el riesgo de que los clientes hagan selecciones incorrectas o abandonen sus carros por completo.
En esta guía, le mostraré cómo usar un fragmento PHP simple para ocultar dinámicamente la dirección de envío en el pago heredado de WooCommerce cuando se elige la camioneta local como la opción preferida.
Este enfoque no solo mejora la experiencia del usuario, sino que también minimiza los posibles errores de cumplimiento. Ya sea que sea propietario de una tienda o desarrollador que trabaje en soluciones personalizadas de WooCommerce, dominar este ajuste lo ayudará a ofrecer un pago más suave y más inteligente.
¡Vamos a sumergirnos en el código que lo hace realidad!
Php Snippet: oculte campos de envío cuando se selecciona la recolección local @ WooCommerce Checkout
/** * @snippet Hide Shipping Fields If Local Pickup * @how-to businessbloomer.com/woocommerce-customization * @author Rodolfo Melogli, Business Bloomer * @testedwith WooCommerce 9 * @community https://businessbloomer.com/club/ */ add_action( 'woocommerce_after_checkout_form', 'bbloomer_disable_shipping_local_pickup' ); function bbloomer_disable_shipping_local_pickup( $available_gateways ) { if ( ! WC()->session ) return; if ( ! WC()->session->get( 'chosen_shipping_methods' ) ) return; // Part 1: Hide shipping on checkout load $chosen_methods = WC()->session->get( 'chosen_shipping_methods' ); $chosen_shipping = $chosen_methods[0]; if ( 0 === strpos( $chosen_shipping, 'local_pickup' ) ) { wc_enqueue_js( " $('#ship-to-different-address input').prop('checked', false).change().closest('h3').hide(); " ); } // Part 2: Hide shipping on checkout shipping change wc_enqueue_js( " $('form.checkout').on( 'change','input[name^="shipping_method"]',function() { var val = $( this ).val(); if (val.match('^local_pickup')) { $('#ship-to-different-address input').prop('checked', false).change().closest('h3').hide(); } else { $('#ship-to-different-address input').prop('checked', true).change().closest('h3').show(); } }); " ); }