Hacer que el campo de estado de pago de Woocommerce sea obligatorio

2 minutos de lectura

avatar de usuario
Danski

Entonces, este problema puede tener una solución fácil, pero estoy atascado por el momento. Después de la última actualización (Woocommerce 3.3.5) tengo un problema con el campo de estado en la página de pago, porque no es obligatorio y la gente simplemente lo omite. Realmente necesito que esto sea obligatorio, porque conecté mi sitio web al servidor de la empresa de entrega a través de una API para enviarles la información del pedido directamente.

Intenté agregar esto a mi functions.php y la cosa es que cuando voy a la página de pago, el campo tiene un asterisco, pero por un segundo.

add_filter( 'woocommerce_billing_fields', 'woo_filter_state_billing', 
10, 1 );
add_filter( 'woocommerce_shipping_fields', 
'woo_filter_state_shipping', 10, 1 );

function woo_filter_state_billing( $address_fields ) { 
$address_fields['billing_state']['required'] = true;
return $address_fields;
}
function woo_filter_state_shipping( $address_fields ) { 
$address_fields['shipping_state']['required'] = true;
return $address_fields;
}

Cualquier ayuda es apreciada. ¡Gracias!

De forma predeterminada, en la última versión 3.3.5 de WooCommerce, el campo de estado es obligatorio… Entonces, en su caso, algo hace que ese campo “no” sea obligatorio.

Puedes probar esto (funciona para los campos de facturación y envío al mismo tiempo):

add_filter( 'woocommerce_default_address_fields' , 'make_state_field_required', 90, 1 );
function make_state_field_required( $address_fields ) {
     $address_fields['state']['required'] = true;

     return $address_fields;
}

El código va en el archivo function.php de su tema secundario activo (o tema activo). Podría funcionar.

  • ¡Gracias! ¡Funciona! Y de hecho, el código que usé antes también funciona… pero el asterisco desaparece del campo. Muy extraño…

    – danski

    23 de mayo de 2018 a las 19:16

  • @danski. si extraño como dices. No tengo eso en mis diferentes clientes y servidores de prueba.

    – LoicTheAztec

    23 mayo 2018 a las 19:20

Esto funcionó mejor para mí a partir de enero de 2019

add_filter( 'woocommerce_billing_fields', 'woo_filter_state_billing', 10, 1 );
add_filter( 'woocommerce_shipping_fields', 'woo_filter_state_shipping', 10, 1 );
function woo_filter_state_billing( $address_fields ) {
  $address_fields['billing_state']['required'] = true;
    return $address_fields;
}
function woo_filter_state_shipping( $address_fields ) {
    $address_fields['shipping_state']['required'] = true;
    return $address_fields;
}

¿Quizás te refieres a “país”? Tuve ese problema, siendo ese campo inexplicablemente opcional. En ese caso, el código sería:

add_filter( 'woocommerce_billing_fields' , 'make_country_field_required', 90, 1 );
function make_country_field_required( $address_fields ) {
     $address_fields['billing_country']['required'] = true;

     return $address_fields;
}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad