Дополнительные поля пользователей в WordPress
Код для визуализации полей:
// когда пользователь сам редактирует свой профиль
add_action( 'show_user_profile', 'true_show_profile_fields' );
// когда чей-то профиль редактируется админом например
add_action( 'edit_user_profile', 'true_show_profile_fields' );
function true_show_profile_fields( $user ) {
// выводим заголовок для наших полей
echo '<h3>Дополнительная информация</h3>';
// поля в профиле находятся в рамметке таблиц <table>
echo '<table class="form-table">';
// добавляем поле город
$user_city = get_the_author_meta( 'city', $user->ID );
echo '<tr><th><label for="city">Город</label></th>
<td><input type="text" name="city" id="city" value="' . esc_attr( $user_city ) . '" class="regular-text" /></td>
</tr>';
// добавляем поле пол
// также можно и установить значение по умолчанию
$gender = ( $gender = get_the_author_meta( 'gender', $user->ID ) ) ? $gender : 'male';
echo '<tr><th><label for="gender">Пол</label></th>
<td><ul>
<li><label><input value="male" name="gender"' . checked( $gender, 'male', false ) . ' type="radio" /> мужской</label></li>
<li><label><input value="female" name="gender"' . checked( $gender, 'female', false ) . ' type="radio" /> женский</label></li>
<li><label><input value="other" name="gender"' . checked( $gender, 'other', false ) . ' type="radio" /> другое</label></li>
</ul></td>
</tr>';
echo '</table>';
}
Код для сохранения данных полей:
// когда пользователь сам редактирует свой профиль
add_action( 'personal_options_update', 'true_save_profile_fields' );
// когда чей-то профиль редактируется админом например
add_action( 'edit_user_profile_update', 'true_save_profile_fields' );
function true_save_profile_fields( $user_id ) {
update_user_meta( $user_id, 'city', sanitize_text_field( $_POST[ 'city' ] ) );
update_user_meta( $user_id, 'gender', sanitize_text_field( $_POST[ 'gender' ] ) );
}
Источник: https://misha.agency/wordpress/custom-user-profile-fields.html