Я пытаюсь добавить новые пользовательские мета-поля, которые можно обновить, когда пользователь редактирует свой профиль или создать новую учетную запись, и правильно их проверить при отправке формы.
I ' мы сделали это, но шаблон не работает.
function add_field( $user ) {?>
<h3><?php _e('Datos:'); ?></h3>
<table class="form-table">
<tr class="form-field form-required">
<th scope="row">
<label for="dni"><?php _e('DNI'); ?>
<span class="description"><?php _e('(required)');?></span></label>
</th>
<td>
<input type="text" name="dni" id="dni" class="regular-text"
pattern="[0-9]{8}[A-Z]{1}" aria-required="true"
maxlength="9" placeholder="Ej: 93691535T"
value="<?php echo esc_attr( get_the_author_meta( 'dni', $user->ID ) ); ?>">
</td>
</tr>
</table>
}
Я использую следующие хуки:
add_action('user_new_form', 'add_field');
add_action('show_user_profile', 'add_field');
add_action('edit_user_profile', 'add_field');
И для сохранения в базе данных:
function save_field( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) ) {
return false;
}
if( isset($_POST['dni']) ) {
$dni = sanitize_text_field($_POST['dni']);
update_user_meta( $user_id, 'dni', $dni );
}
}
add_action('user_register' , 'save_field');
add_action('personal_options_update', 'save_field');
add_action('edit_user_profile_update', 'save_field');