WordPress: Добавляем дополнительные поля в профиль пользователя WordPress
- 18 октября, 2022
- 1:26 дп
- Нет комментариев
Все следующие манипуляции с кодом будут происходить в файле function.php активной темы. В результате, в профиле пользователя появятся 3 дополнительных поля.
Для добавления полей на страницу профиля, будем использовать WordPress хаки: show_user_profile (просмотр и изменение дополнительных полей только собственного профиля) и edit_user_profile (тоже самое, но для всех профилей), а также функцию для формирования полей.
add_action( 'show_user_profile', 'add_extra_social_links' );
add_action( 'edit_user_profile', 'add_extra_social_links' );
function add_extra_social_links( $user )
{
?>
Дополнительные данные пользователя
Приведенный выше код добавляет на страницу с профилем пользователя 3 новых поля. Стоит обратить внимание на атрибут name у input полей, наименования полей понадобятся при сохранении введенных данных в базу. Также обратите внимание на атрибут value, мы используем функцию get_the_author_meta() для того, чтобы получить уже хранящиеся данные по этому пользователю и выводим их в поля для редактирования.
Для использования этой функции требуется два параметра:
Функция esc_attr кодирует символы <, >, &, » и ‘.
Сохраняем введенные данные
Когда происходит сохранение данных профиля пользователя WordPress, мы должны добавить собственное действие для сохранения информации в новых полях. В этом нам помогут хаки personal_options_update (сохранение данных пользовательских полей собственного профиля WordPress) и edit_user_profile_update (сохранение данных пользовательских полей чужих профилей WordPress).
Затем мы можем использовать глобальный массив $_POST, чтобы получить данные введенные в пользовательские поля (получаем значение поля по его наименованию) на странице профиля пользователя и занести эти данные в базу. Чтобы обновить данные пользователя в базе мы должны использовать WordPress функцию update_user_meta().
Данная функция принимает 4 параметра:
- $user_id — идентификатор пользователя;
- $meta_key — ключ поля;
- $meta_value — значение, которое необходимо сохранить;
- $prev_value — старое значение, используется для сравнения.
add_action( 'personal_options_update', 'save_extra_social_links' );
add_action( 'edit_user_profile_update', 'save_extra_social_links' );
function save_extra_social_links( $user_id )
{
update_user_meta( $user_id,'facebook_profile', sanitize_text_field( $_POST['facebook_profile'] ) );
update_user_meta( $user_id,'twitter_profile', sanitize_text_field( $_POST['twitter_profile'] ) );
update_user_meta( $user_id,'google_profile', sanitize_text_field( $_POST['google_profile'] ) );
}
Также используется функция sanitize_text_field для обработки сохраняемых данных, удаляет все потенциально опасные символы.
Отображение данных пользователя
Если Вы хотите отобразить информацию о пользователе не только в админке, но и в пределах вашей темы, то есть две функции, которые можно использовать:
- the_author_meta( $field, $userID )
- get_the_author_meta( $field, $userID )
Разница между этими двумя функциями в том, что get_the_author_meta() вернет данные, а the_author_meta() выведет данные на экране.