Tengo curiosidad por saber cuántos tenían el mismo problema. En la página de pago de WooCommerce, algunos campos de usuario como Billing_Name, Shipping_address_1, etc. se guardan automáticamente en los datos del «perfil de usuario de WordPress» al procesar.
Pero, ¿qué pasaría si también quisiéramos mostrar y guardar otro campo de usuario existente, como «user_twitter«, o «user_url“, ¿Que puede encontrar en el perfil de usuario de WP de forma predeterminada?
Bueno, esto es muy fácil: primero, agregamos un campo de pago personalizado; Luego, nos aseguramos de que cuando se procese el pago, guardemos ese campo correctamente.
¡Disfrutar!
Php Snippet: Mostrar y guardar el campo de usuario de WordPress al pago de WooCommerce
/** * @snippet Display & Save WP User Field @ Checkout - WooCommerce * @how-to businessbloomer.com/woocommerce-customization * @author Rodolfo Melogli, Business Bloomer * @compatible WooCommerce 9 * @community https://businessbloomer.com/club/ */ // ------------------------ // 1. Display field @ Checkout add_action( 'woocommerce_after_checkout_billing_form', 'bbloomer_add_user_field_to_checkout' ); function bbloomer_add_user_field_to_checkout( $checkout ) { $current_user = wp_get_current_user(); $saved_url = $current_user->user_url; woocommerce_form_field( 'user_url', array( 'type' => 'text', 'class' => array( 'user_url form-row-wide' ), 'label' => 'Website URL', 'placeholder' => 'https://yoursite.com', 'required' => false ), $saved_url ); } // ------------------------ // 2. Save Field Into User Meta add_action( 'woocommerce_checkout_update_user_meta', 'bbloomer_checkout_field_update_user_meta' ); function bbloomer_checkout_field_update_user_meta( $user_id ) { if ( $user_id && $_POST['user_url'] ) { $args = array( 'ID' => $user_id, 'user_url' => esc_attr( $_POST['user_url'] ) ); wp_update_user( $args ); } }