Agregar un campo personalizado adicional en la página de cuenta de edición de WooCommerce

En WooCommerce, he podido agregar campos personalizados en la página Editar cuenta. He intentado agregar un segundo campo personalizado “Color favorito 2” pero no puedo hacerlo funcionar. Hay algo que estoy haciendo mal.

¿Cómo puedo hacer para agregar / guardar un campo personalizado adicional en la página Editar cuenta?

// Add the custom field "favorite_color" add_action( 'woocommerce_edit_account_form', 'add_favorite_color_to_edit_account_form' ); function add_favorite_color_to_edit_account_form() { $user = wp_get_current_user(); ?> 

<?php } // Save the custom field 'favorite_color' add_action( 'woocommerce_save_account_details', 'save_favorite_color_account_details', 12, 1 ); function save_favorite_color_account_details( $user_id ) { // For Favorite color if( isset( $_POST['favorite_color'] ) ) update_user_meta( $user_id, 'favorite_color', sanitize_text_field( $_POST['favorite_color'] ) ); // For Billing email (added related to your comment) if( isset( $_POST['account_email'] ) ) update_user_meta( $user_id, 'billing_email', sanitize_text_field( $_POST['account_email'] ) );

Esto se puede hacer muy fácilmente Realizando algunos cambios en su código de esta manera:

 // Add the custom field "favorite_color" add_action( 'woocommerce_edit_account_form', 'add_favorite_color_to_edit_account_form' ); function add_favorite_color_to_edit_account_form() { $user = wp_get_current_user(); // First Field ?> 

< ?php // Second Field ?>

< ?php } // Save the custom field 'favorite_color' add_action( 'woocommerce_save_account_details', 'save_favorite_color_account_details', 12, 1 ); function save_favorite_color_account_details( $user_id ) { // For Favorite color if( isset( $_POST['favorite_color'] ) ) update_user_meta( $user_id, 'favorite_color', sanitize_text_field( $_POST['favorite_color'] ) ); // For Favorite color 2 if( isset( $_POST['favorite_color2'] ) ) update_user_meta( $user_id, 'favorite_color2', sanitize_text_field( $_POST['favorite_color2'] ) ); // For Billing email (added related to your comment) if( isset( $_POST['account_email'] ) ) update_user_meta( $user_id, 'billing_email', sanitize_text_field( $_POST['account_email'] ) ); }

El código va en el archivo function.php de su tema hijo activo (o tema activo) o en cualquier archivo de complemento.

Probado y funciona.

Obtendrás esto:

enter image description here