Tictac Soluciones Informáticas > WooCommerce > Añadir el campo teléfono a la dirección de envío en WooCommerce

Añadir el campo teléfono a la dirección de envío en WooCommerce

¿Por qué añadir el teléfono como obligatorio en la dirección de envío? Hoy en día, casi todas las compañías de envíos nos piden el teléfono del destinatario por si hay cualquier problema o no consiguen localizarlo en casa. Pero, como ya habréis comprobado, en WooCommerce no te viene por defecto el teléfono en la dirección de envío. Sí que te viene en la dirección de facturación, pero ¿que pasa si no es la misma? En este sencillísimo tutorial os vamos a explicar como añadir el teléfono en la dirección de envío como un campo obligatorio.

Simplemente tendréis que ir al archivo wp-content/themes/nombre-de-vuestra-plantilla/functions.php y añadir al final del archivo este código:

 

//Añadir el teléfono a la dirección de envío en el formulario de checkout
// Hook in
add_filter( ‘woocommerce_checkout_fields’ , ‘custom_override_checkout_fields’ );

// Nuestra función – $fields se pasa por un filtro!
function custom_override_checkout_fields( $fields ) {
$fields[‘shipping’][‘shipping_phone’] = array(
‘label’ => __(‘Teléfono:’, ‘woocommerce’),
‘placeholder’ => _x(‘Teléfono’, ‘placeholder’, ‘woocommerce’),
‘required’ => true,
‘class’ => array(‘form-row-wide’),
‘clear’ => true
);

return $fields;
}

/**
* OPCIONAL: Para que muestre un mensaje de error específico si no se rellena el teléfono en la dirección de envío*/
add_action(‘woocommerce_checkout_process’, ‘my_custom_checkout_field_process’);

function my_custom_checkout_field_process() {
// Si no se ha rellenado, muestra el mensaje de error
if ( ! $_POST[‘shipping_phone’] )
wc_add_notice( __( ‘El teléfono es necesario en la dirección de envío para las empresas de mensajería’ ), ‘error’ );
}
/**
* Para grabar el teléfono como metadato del pedido
*/
add_action( ‘woocommerce_checkout_update_order_meta’, ‘my_custom_checkout_field_update_order_meta’ );

function my_custom_checkout_field_update_order_meta( $order_id ) {
if ( ! empty( $_POST[‘shipping_phone’] ) ) {
update_post_meta( $order_id, ‘telefono_envio’, sanitize_text_field( $_POST[‘shipping_phone’] ) );
}
}
// Para mostrarlo en el backoffice, en la ficha del pedido, en la dirección de envío
add_action( ‘woocommerce_admin_order_data_after_shipping_address’, ‘my_custom_checkout_field_display_admin_order_meta’, 10, 1 );

function my_custom_checkout_field_display_admin_order_meta($order){
echo ‘<p><strong>’.__(‘Teléfono’).’:</strong> ‘ . get_post_meta( $order->id, ‘telefono_envio’, true ) . ‘</p>’;
}

2018-07-02T17:21:40+00:0007/03/2016|WooCommerce, WordPress|

2 Comments

  1. Hola!
    Gracias por compartir el código, pero encuentro un problema al implementarlo: Si la persona no marca la opción de "enviar a una dirección diferente" entonces aparece el mensaje de 'El teléfono es necesario en la dirección de envío para las empresas de mensajería'.
    La idea es que el campo de teléfono sea obligatorio y se muestre el mensaje sólo si se marca la casilla de enviar a una dirección diferente

    Agradezco tu ayuda.

    • y algo que se me olvidó agregar: ¿Cómo se graba el teléfono en los campos de Dirección de envío del cliente en la información del usuario de wordpress?

Deje su comentario