Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

144
Vistas
Configure el correo electrónico del usuario de WordPress en lugar del correo electrónico de facturación como valor predeterminado para el campo de pago de WooCommerce

Lo que intento hacer es cambiar los campos de pago para que, si un usuario ha iniciado sesión, no pueda editar su campo de correo electrónico de facturación.

Este código a continuación funciona muy bien, sin embargo, idealmente quiero eliminar la situación en la que los usuarios pueden tener 2 direcciones de correo electrónico en primer lugar y establecer el valor de $address_fields['billing']['billing_email'] para que sea la dirección de correo electrónico de los usuarios su cuenta

He intentado agregar

 'value' => $current_user->user_email

y

 'default' => $current_user->user_email

a la matriz, sin embargo, esto parece no hacer nada.

Asi que:

  1. En primer lugar, ¿cómo puedo establecer un valor para este formulario y evitar que se cambie?
  2. En segundo lugar, $current_user->user_email la forma correcta de obtener el correo electrónico de la cuenta (contacto) de los usuarios y no el correo electrónico de facturación de su cuenta.

 function custom_checkout_fields( $address_fields ) { $current_user = wp_get_current_user(); if ( is_user_logged_in() ) { unset( $address_fields['billing']['billing_email'] ); unset( $address_fields['billing']['billing_em_ver'] ); $address_fields['billing']['billing_email'] = [ 'label' => 'Email address', 'required' => false, 'description' => '<i><a href="/shop/my-account/customer-logout/">to change this please click here logout and login/register as another user</a> or <a href="/shop/my-account/edit-account/">click here to modify the address on your account</a></i>', 'custom_attributes' => [ 'disabled' => 'disabled', ] ]; return $address_fields; } else{ return $address_fields; } } add_filter( 'woocommerce_checkout_fields', 'custom_checkout_fields' ,20, 1 );

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

En primer lugar, vaya a /plugins/woocommerce/templates/checkout , copie el archivo de plantilla form-billing.php que se encuentra en esa carpeta y péguelo en yourTheme/woocommerce/checkout/ .

En segundo lugar, evite que WooCommerce complete automáticamente el campo de dirección de correo electrónico editando el archivo de plantilla form-billing.php copiado y cambiando el siguiente fragmento:

 <div class="woocommerce-billing-fields__field-wrapper"> <?php $fields = $checkout->get_checkout_fields( 'billing' ); foreach ( $fields as $key => $field ) { woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); } ?> </div>

A esto:

 <div class="woocommerce-billing-fields__field-wrapper"> <?php $fields = $checkout->get_checkout_fields( 'billing' ); foreach ( $fields as $key => $field ) { if ( 'billing_email' != $key ) { woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); } else { woocommerce_form_field( $key, $field ); } } ?> </div>

En tercer lugar, inyecte el correo electrónico de WordPress en el campo, hágalo inmutable y agregue su descripción personalizada agregando lo siguiente al archivo functions.php de su tema:

 function shillongtitude_billing_email_field($fields) { if ( is_user_logged_in() ) { $current_user = wp_get_current_user(); //set the user email as the email field value $fields['billing']['billing_email']['default'] = $current_user->user_email; //set the description $fields['billing']['billing_email']['description'] = '<i><a href="/shop/my-account/customer-logout/">to change this please click here logout and login/register as another user</a> or <a href="/shop/my-account/edit-account/">click here to modify the address on your account</a></i>'; // set attributes $fields['billing']['billing_email']['custom_attributes'] = array( 'readonly'=>'readonly', 'label' => 'Email address', 'required' => false ); return $fields; } else { return $fields; } } add_filter('woocommerce_checkout_fields', 'shillongtitude_billing_email_field');

over 4 years ago · Santiago Trujillo Denunciar

0

Úselo si necesita cambiar los detalles del usuario al enviar un nuevo pedido de woo


Esta función comparará los campos de pago:

nombre_de_facturación - apellido_de_facturación - correo_de_facturación

con campos de cuenta personal:

nombre - apellido - nombre para mostrar

y se actualizará en caso de discrepancia al enviar un nuevo pedido.

 add_action('woocommerce_new_order', 'sync_woocommerce_email', 10, 2) ; function sync_woocommerce_email( $order_id ) { $current_user = wp_get_current_user(); $user_cname = $current_user->display_name; $user_fname = $current_user->first_name; $user_lname = $current_user->last_name; $user_fullname = $user_fname.' '.$user_lname; $bill_fname = $current_user->billing_first_name; $bill_lname = $current_user->billing_last_name; $bill_fullname = $bill_fname.' '.$bill_lname; if ($current_user->user_email != $current_user->billing_email) { wp_update_user( array ( 'ID' => $current_user->ID, 'user_email' => $current_user->billing_email ) ) ; } if ($current_user->display_name != $bill_fullname) { wp_update_user( array ( 'ID' => $current_user->ID, 'display_name' => $bill_fullname ) ) ; } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda