No puedo cambiar una etiqueta en WooCommerce con el filtro normal

31 oct 2013, 09:38:21
Vistas: 18.2K
Votos: 2
  // Enganchar el filtro
  add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

// Nuestra función enganchada - $fields se pasa a través del filtro!
function custom_override_checkout_fields( $fields ) {
 $fields['order']['order_comments']['placeholder'] = 'Requisitos especiales de entrega';
 $fields['billing']['billing_company']['label'] = 'Nombre de empresa (si aplica)';
 $fields['shipping']['shipping_company']['label'] = 'Nombre de empresa (si aplica)';
 $fields['billing']['billing_address_2']['placeholder'] = 'Número/ nombre de casa';
 $fields['shipping']['shipping_address_2']['placeholder'] = 'Número/ nombre de casa';
 $fields['billing']['billing_state']['required'] = true;
 $fields['billing']['billing_state']['label'] = 'Condado <abbr class="required" title="requerido">*</abbr>';
 return $fields;
}

He usado este código para cambiar algunos campos del formulario de pago de WooCommerce.

Por alguna razón inexplicable, la etiqueta para el estado/provincia de facturación se niega a cambiar. Aunque la etiqueta para la compañía de facturación cambió exitosamente, la etiqueta para el estado no lo hace. Se ha establecido correctamente como requerido pero no puedo cambiar la etiqueta.

¿Alguien sabe qué estoy haciendo mal o si esto es un error?

2
Comentarios

¿Puedes verificar si la etiqueta <abbr> es la causa, ya que se usa para abreviaturas? Prueba usando, por ejemplo, <span> en su lugar... Solo una suposición

Maruti Mohanty Maruti Mohanty
31 oct 2013 14:01:15

@MarutiMohanty no, no funciona en absoluto. ¿Puedes reproducir el error?

Lucky Luke Lucky Luke
31 oct 2013 15:38:00
Todas las respuestas a la pregunta 2
3
10

Debes usar el hook woocommerce_default_address_fields:

add_filter( 'woocommerce_default_address_fields' , 'wpse_120741_wc_def_state_label' );
function wpse_120741_wc_def_state_label( $address_fields ) {
     $address_fields['state']['label'] = 'Condado';
     return $address_fields;
}

Esto (y más) se describe en la documentación de WooCommerce: Personalización de campos de checkout usando acciones y filtros, así que lee bien la documentación la próxima vez... ;)


Edición:
El código anterior no funciona en todos los casos, porque al seleccionar el país el campo de estado del formulario de checkout se actualiza mediante javascript. Para que funcione es necesario agregar el nombre deseado para esos casos como traducción, usando el hook woocommerce_get_country_locale así:

add_filter('woocommerce_get_country_locale', 'wpse_120741_wc_change_state_label_locale');
function wpse_120741_wc_change_state_label_locale($locale){
    // descomenta /** así /**/ para mostrar los locales
    /**
    echo '<pre>';
    print_r($locale);
    echo '</pre>';
    /**/
    $locale['GB']['state']['label'] = __('prueba', 'woocommerce');
    $locale['US']['state']['label'] = __('cualquier cosa', 'woocommerce');
    return $locale;
}

El hook se encuentra en el archivo class-wc-countries.php en la función get_country_locale().

31 oct 2013 13:36:48
Comentarios

Probablemente sea útil señalar que la llamada ajax para recargar la sección del formulario de pago es lo que sobrescribe las etiquetas de los campos del formulario que originalmente estaban correctamente sobrescritas, con valores que no están sobrescritos. Por qué no usarían el mismo hook de alguna manera o forma, es algo que no logro entender.

kontur kontur
5 oct 2017 13:15:53

@NeophytePolyhistor Un placer

Nicolai Grossherr Nicolai Grossherr
6 oct 2017 14:18:52

@kontur Especialmente cuatro años después

Nicolai Grossherr Nicolai Grossherr
6 oct 2017 14:19:17
0

Sé que esto fue hace algún tiempo, pero me gustaría añadir un poco a este hilo, aunque solo sea para ahorrar a otros la misma frustración que experimenté.

Hay algunos campos en la página de checkout que simplemente no cambiarán, independientemente del filtro que uses. Estos campos se deben al archivo checkout.js. Este archivo carga información de localización desde la configuración regional actual y restablece las etiquetas y los placeholders de esos campos. Esto fue particularmente frustrante al intentar cambiar el placeholder "Dirección" por "Apartado postal/Dirección".

Lo que se necesita hacer para cambiar estos campos es establecer una configuración regional en tu archivo wp_config.php, algo como:

define('WPLANG', 'en_GB');

Luego descarga el plugin "Codestyling Localisation".

Ve a Herramientas->Localización, desplázate hacia abajo hasta WooCommerce y vuelve a escanear tu archivo de idioma, en este caso sería el archivo de inglés/Reino Unido.

Después de que haya escaneado, haz clic en editar y busca tu término, en este caso "Dirección" y añade tu traducción, en mi caso fue "Apartado postal/Dirección".

Haz clic en el botón "Generar archivo MO" en la parte superior y listo. Instrucciones completas sobre cómo hacer esto en:

http://docs.woothemes.com/document/woocommerce-localization/

11 mar 2014 07:01:58