CREAR EL CAMPO PERSONALIZADO EN LA PÁGINA “MI CUENTA” DE
WOOCOMERCE
1° Instalar
Code Snippets Por Dynamic.oo
2° Definir el
nombre que tendrá el campo personalizado a agregar y su ID.
Por ejemplo: Nombre: “N° de Matricula”, Id:
“matricula”
3° Crear el
campo personalizado en la página “Mi cuenta” de Woocomerce:
Agregar el campo personalizado es
bastante fácil. Usaremos el enlace woocommerce_edit_account_form para agregar
el campo y el enlace woocommerce_save_account_details para guardar la
información ingresada. Nuestro nuevo campo aparecerá debajo de los campos de
administración de contraseñas (dominio.com/mi-cuenta/edit-account)
Plantilla:
add_action( 'woocommerce_edit_account_form',
'cssigniter_add_account_details' ); function cssigniter_add_account_details() {
$user = wp_get_current_user();
?>
<p class="woocommerce-form-row woocommerce-form-row--wide
form-row form-row-wide"> <label for="id_campopersonalizado"><?php
esc_html_e( 'Titulo para el nuevo Campo',
'your-text-
domain'
); ?></label>
<input type="tipo_de_campo" class="woocommerce-Input
woocommerce-Input--text input-text" name="id_campopersonalizado"
id="id_campopersonalizado"
value="<?php echo esc_attr( $user-> id_campopersonalizado); ?>" />
</p>
<?php
}
add_action( 'woocommerce_save_account_details',
'cssigniter_save_account_details' ); function cssigniter_save_account_details(
$user_id ) {
if ( isset( $_POST[id_campopersonalizado]
) ) {
update_user_meta( $user_id, id_campopersonalizado, sanitize_text_field( $_POST[id_campopersonalizado] ) );
}
}
MOSTRAR
EL CAMPO EN LA PÁGINA DE PERFIL DE WORDPRESS DE LOS USUARIOS (DOMINIO.COM/
WP-ADMIN/USERS.PHP)
Una
vez que el cliente ha ingresado su fecha de nacimiento, podemos mostrarla en la
página de perfil del usuario para que podamos acceder fácilmente a la
información cuando sea necesario.
Forma #1 (Plantilla n° 1):
add_action( 'show_user_profile',
'cssigniter_show_extra_account_details', 15 ); add_action( 'edit_user_profile',
'cssigniter_show_extra_account_details', 15 ); function cssigniter_show_extra_account_details(
$user ) {
$id_campopersonalizado = get_user_meta(
$user->ID, 'id_campopersonalizado', true );
if ( empty( $id_campopersonalizado ) ) {
return;
}
?>
<h3><?php esc_html_e( 'Extra account details',
'your-text-domain' ); ?></h3>
<table class="form-table">
<tr>
<th><?php
esc_html_e( 'Titulo para el nuevo Campo',
'your-text-domain' ); ?></label></th> <td>
<p><?php echo
esc_html( $id_campopersonalizado );
?></p>
</td>
</tr>
</table>
<?php
}
Forma #2 (Plantilla n° 2):
add_filter(
'user_contactmethods', 'modify_user_contact_methods' );
function
modify_user_contact_methods( $methods ) {
$methods['id_campopersonalizado
'] = __(
'Titulo para el nuevo Campo' );
return $methods;
}
EJEMPLO
DE EJECUCIÓN:
// Agrega el nuevo
campo de Matricula Profesional en Pagina Mi Cuenta
add_action( 'woocommerce_edit_account_form',
'cssigniter_add_account_details' ); function cssigniter_add_account_details() {
$user = wp_get_current_user();
?>
<p class="woocommerce-form-row woocommerce-form-row--wide
form-row form-row-wide"> <label
for="matricula"><?php esc_html_e( 'N° Matricula',
'your-text-domain' ); ?></label> <input type="text"
class="woocommerce-Input woocommerce-Input--text input-text"
name="matricula"
id="matricula" value="<?php echo esc_attr(
$user->matricula ); ?>" /> </p>
<?php
}
add_action( 'woocommerce_save_account_details',
'cssigniter_save_account_details' ); function cssigniter_save_account_details(
$user_id ) {
if ( isset( $_POST['matricula'] ) ) {
update_user_meta( $user_id, 'matricula', sanitize_text_field(
$_POST['matricula'] ) );
}
}
// Agrega el
nuevo campo de Matricula Profesional en Pagina de perfil Wordpress No editable add_action( 'show_user_profile',
'cssigniter_show_extra_account_details', 15 ); add_action( 'edit_user_profile',
'cssigniter_show_extra_account_details', 15 );
function
cssigniter_show_extra_account_details( $user ) { $matricula = get_user_meta(
$user->ID, 'matricula', true );
if ( empty( $matricula ) ) {
return;
}
?>
<h3><?php esc_html_e( 'Extra account details',
'your-text-domain' ); ?></h3>
<table class="form-table">
<tr>
<th><?php esc_html_e( 'N° Matricula', 'your-text-domain' );
?></label></th> <td>
<p><?php echo
esc_html( $matricula ); ?></p>
</td>
</tr>
</table>
}
//
Agrega el
nuevo campo de Matricula Profesional en Pagina de perfil Wordpress Editable
add_filter( 'user_contactmethods', 'modify_user_contact_methods' );
function
modify_user_contact_methods( $methods ) {
$methods['matricula'] = __( 'N° Matricula' );
return $methods;}
EJEMPLO
- 2 CAMPOS PERSONALIZADOS
USANDO USER REGISTRATION
add_action( 'woocommerce_edit_account_form',
'cssigniter_add_account_details' ); function cssigniter_add_account_details() {
$user = wp_get_current_user();
?>
<p class="woocommerce-form-row woocommerce-form-row--wide
form-row form-row-wide"> <label
for="user_registration_input_box_1644903985"><?php esc_html_e(
'CUIT', 'your-text-
domain' ); ?></label>
<input type="text" class="woocommerce-Input
woocommerce-Input--text input-text"
name="user_registration_input_box_1644903985"
id="user_registration_input_box_1644903985" value="<?php echo
esc_attr( $user-> user_registration_input_box_1644903985); ?>" />
</p>
<p class="woocommerce-form-row woocommerce-form-row--wide
form-row form-row-wide"> <label
for="user_registration_input_box_1644903947"><?php esc_html_e(
'CUIT', 'your-text-
domain' ); ?></label>
<input type="text" class="woocommerce-Input
woocommerce-Input--text input-text" name="user_registration_input_box_1644903947"
id="user_registration_input_box_1644903947" value="<?php echo
esc_attr( $user-> user_registration_input_box_1644903947); ?>" />
</p>
<?php
}
add_action( 'woocommerce_save_account_details',
'cssigniter_save_account_details' ); function cssigniter_save_account_details(
$user_id ) {
if ( isset( $_POST[user_registration_input_box_1644903985] ) )
{update_user_meta( $user_id, user_registration_input_box_1644903985,
sanitize_text_field( $_POST[user_registration_input_box_1644903985] ) );}
if ( isset( $_POST[user_registration_input_box_1644903947] ) )
{update_user_meta( $user_id, user_registration_input_box_1644903947,
sanitize_text_field( $_POST[user_registration_input_box_1644903947] ) );}
}
OBSERVACIONES:
Estos códigos también pueden
utilizarse para mostrar, en la página “Mi cuenta”, los datos ingresados por los
usuarios al registrarse en formularios de registro personalizados con campos
personalizados creados por plugins como por ejemplo “User Registration de Por
WPEverest”. En este caso hay que analizar los id que crea el plugin User
Registration en los formularios de registros personalizados mediante el
inspeccionador de códigos del navegador web (Se los saca de la página de perfil
de usuario de Wordpress)
Fuentes:
https://www.cssigniter.com/add-a-custom-field-to-woocommerce-account-
details/?fbclid=IwAR3_fzfWZGD8YkSndMzIJRfbeR7FeCg9sSkELga5c_8TwacvC60-R8X1Ghk
https://developer.wordpress.org/reference/hooks/user_contactmethods/
0 Comentarios