Agregar un campo personalizado al formulario de pago en WooCommerce

En el siguiente ejemplo crearemos varias funciones que nos ayudarán a agregar un campo personalizado al formulario de pago en WooCommerce con el uso de varias acciones. Para este ejemplo en particular agregaremos el RFC (Identificación tributaria para México) por si el cliente requiere factura.

Asegúrate de insertar el código en el archivo functions.php del tema activo en tu sitio web.

Creamos el campo y lo añadimos al formulario de pago (antes de las notas):

add_action( 'woocommerce_before_order_notes', 'my_rfc_checkout_field' );
function my_rfc_checkout_field( $checkout ) {
    echo '<div id="my_rfc_checkout_field"><h3>' . __('Detalles del cliente') . '</h3>';
    woocommerce_form_field( 'my_field_rfc', array(
        'type'          => 'text',
        'class'         => array('my-field-rfc-class form-row-wide'),
        'label'         => __('RFC*'),
        'placeholder'   => __('Ingresa el rfc'),
        ), $checkout->get_value( 'my_field_rfc' ));

    echo '</div>';
}

Asignamos una restricción para que nuestro campo sea obligatorio (solo en caso de que así sea):

add_action('woocommerce_checkout_process', 'my_rfc_checkout_field_process');
function my_rfc_checkout_field_process() {
    if ( ! $_POST['my_field_rfc'] )
        wc_add_notice( __( 'Por favor ingresa el RFC.' ), 'error' );
}

Insertamos el RFC al pedido del cliente:

add_action( 'woocommerce_checkout_update_order_meta', 'my_rfc_checkout_field_update_order_meta' );
function my_rfc_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['my_field_rfc'] ) ) {
        update_post_meta( $order_id, 'RFC', sanitize_text_field( $_POST['my_field_rfc'] ) );
    }
}

Mostramos el RFC en el pedido:

add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_rfc_checkout_field_display_admin_order_meta', 10, 1 );
function my_rfc_checkout_field_display_admin_order_meta($order){
    echo '<p><strong>'.__('RFC').':</strong> ' . get_post_meta( $order->id, 'rfc', true ) . '</p>';
}

Mostramos el RFC en los correos del pedido:

add_filter('woocommerce_email_order_meta_keys', 'rfc_select_order_meta_keys');
function rfc_select_order_meta_keys( $keys ) {
	$keys['RFC'] = 'rfc';
	return $keys;
	
}

Si deseas más información sobre como desarrollar en

WooCommerce

, visita el Codex oficial de WooCommerce haciendo clic aquí.

Si necesitas consultoría sobre

WooCommerce

envíame un correo a hola@dannydshore.com o haciendo clic aquí.

#conceptos #wordpress #woocommerce #shortcodes #css