Deshabilitar el campo de correo electrónico en los detalles de la cuenta de cliente de WooCommerce

31 mar 2017, 08:13:01
Vistas: 15.1K
Votos: 2

¿Existe alguna posibilidad de deshabilitar el campo de correo electrónico en los detalles de la cuenta de cliente de WooCommerce? ¿O hay algún hook o acción disponible para hacer esto? Estoy usando un tema prefabricado y no tengo mucha experiencia con PHP. He probado un plugin llamado "Prevent Email Change" de Happy Plugins, pero no funcionó.

Agradecería cualquier ayuda al respecto.

Gracias,

0
Todas las respuestas a la pregunta 3
4

Puedes hacerlo añadiendo este código al archivo functions.php:

function custom_override_checkout_fields( $fields ) {
    unset($fields['billing']['billing_email']);    
    return $fields;
}
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields', 1000, 1 );

Pero este es un enfoque incorrecto, ya que WooCommerce utiliza el correo electrónico para notificar al usuario sobre el estado del pedido.

31 mar 2017 21:19:56
Comentarios

Hola, gracias por esto. Sí, lo sabía. Pero lo que quería es que puedan registrar su correo electrónico al finalizar la compra y luego, una vez que su cuenta se haya creado por completo, no puedan cambiar su correo electrónico en la página de Detalles de la Cuenta. ¿Sería posible eso?

Bry Ledesma Bry Ledesma
3 abr 2017 03:05:21

WordPress no tiene un filtro o hook para evitar el cambio de correo electrónico. Happy Plugin solo deshabilita el campo de correo electrónico en la página de administración, por lo que no puede evitar acciones en la página de Detalles de la Cuenta en WooCommerce. Pero, ¿cuál es la razón para prohibirlo? Los usuarios se identifican por IDs.

KAGG Design KAGG Design
3 abr 2017 03:46:25

Tengo una razón válida para esto. Estoy creando un sitio de eLearn con acceso restringido. Solo pueden unirse usuarios de dominios en la lista blanca. La validación del correo electrónico se realiza durante el registro, pero los usuarios aún pueden cambiar su correo electrónico a través de esta página, lo cual no debería suceder.

pmdci pmdci
18 ago 2017 20:43:20

esto solo elimina el campo de la visualización. No lo deshabilita.

Debbie Kurth Debbie Kurth
12 abr 2022 23:46:13
0

Esto es lo que utilizo. También estaba solucionando problemas con correos electrónicos incorrectos en cuentas registradas. Así que simplemente deshabilité el campo y lo configuré a 'required' => false si el usuario está conectado.

if ( is_user_logged_in() ) {
    $fields['billing']['billing_email'] = [
        'label' => 'Correo electrónico',
        'required'  => false,
        'custom_attributes' => [
            'disabled' => 'disabled',
        ]
    ];
} else {
    $fields['billing']['billing_email'] = [
        'label' => 'Correo electrónico',
        'required'  => true,

    ];
}

¡Espero que esto ayude a alguien por ahí!

7 abr 2020 10:36:59
2

Encontré en este archivo: wp-content\plugins\woocommerce\includes\class-wc-countries.php:

public function get_address_fields( $country = '', $type = 'billing_' )

Configura required como false y el email sería opcional.

13 jul 2020 05:10:24
Comentarios

Hola Manuel, bienvenido a wordpress.stackexchange. Aunque tu respuesta es técnicamente correcta, tengo que votar negativamente porque editar un plugin de esa manera no es recomendable. ¿Qué pasaría si el plugin se actualiza y los cambios se eliminan? Es mejor usar un hook o una función de filtro para lograr el objetivo del OP. Gracias por participar, espero que esta sea la primera de muchas respuestas útiles que proporcionarás :)

admcfajn admcfajn
13 jul 2020 07:07:33

Lo voté positivamente, porque es una forma creativa de resolver un problema. No necesariamente la forma correcta, pero la encontraste y puede ser la única solución para algunos. No es justo ni correcto desalentar la solución, ya que se podría haber usado un child theme o cualquier otro número de anulaciones que están protegidas de las actualizaciones del plugin. La mejor manera es cambiar el campo [required] a 0 usando add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); valores: [billing_email] => Array ( [label] => Email address [required] => 1

Debbie Kurth Debbie Kurth
12 abr 2022 23:50:01