В стандартном профиле пользователя WordPress доступен ограниченный набор полей, таких как имя, email, описание и т.д. Но часто возникает необходимость расширить профиль дополнительными данными — например, добавить поле для ссылки на социальные сети, номер телефона, должность или другие индивидуальные параметры.
В этой статье мы рассмотрим, как добавить собственное поле в профиль пользователя WordPress без использования плагинов. Это полезно, когда нужно лёгкое и гибкое решение без зависимости от сторонних инструментов, а также возможность полностью контролировать функционал.
Добавление дополнительного поля в форму профиля пользователя
Чтобы добавить новое поле в форму редактирования профиля, нам нужно использовать хуки WordPress, которые отвечают за вывод полей в админке.
Для этого используем хук show_user_profile и edit_user_profile, которые позволяют добавить HTML код поля при просмотре или редактировании профиля.
function wpconsult_add_custom_user_profile_field($user) {
?>
<h3>Дополнительная информация</h3>
<table class="form-table">
<tr>
<th><label for="wpconsult_phone">Телефон</label></th>
<td>
<input type="text" name="wpconsult_phone" id="wpconsult_phone" value="<?php echo esc_attr(get_the_author_meta('wpconsult_phone', $user->ID)); ?>" class="regular-text" /><br />
<span class="description">Пожалуйста, введите номер телефона.</span>
</td>
</tr>
</table>
<?php
}
add_action('show_user_profile', 'wpconsult_add_custom_user_profile_field');
add_action('edit_user_profile', 'wpconsult_add_custom_user_profile_field');В этом коде мы добавили поле с именем wpconsult_phone, которое будет отображаться на странице профиля пользователя.
Сохранение данных дополнительного поля
Важно не только вывести поле, но и сохранить введённые данные при сохранении профиля. Для этого используем хуки personal_options_update и edit_user_profile_update.
function wpconsult_save_custom_user_profile_field($user_id) {
if (!current_user_can('edit_user', $user_id)) {
return false;
}
update_user_meta($user_id, 'wpconsult_phone', sanitize_text_field($_POST['wpconsult_phone']));
}
add_action('personal_options_update', 'wpconsult_save_custom_user_profile_field');
add_action('edit_user_profile_update', 'wpconsult_save_custom_user_profile_field');Здесь мы проверяем права пользователя и сохраняем значение поля в метаданных пользователя.
Использование дополнительного поля в шаблонах сайта
После того, как данные сохранены, их можно использовать в шаблонах сайта для вывода информации. Пример вывода телефона пользователя:
$user_id = get_current_user_id();
$phone = get_user_meta($user_id, 'wpconsult_phone', true);
if ($phone) {
echo '<p>Телефон пользователя: ' . esc_html($phone) . '</p>';
}Таким образом, вы можете показывать дополнительную информацию о пользователях на странице профиля, в личном кабинете или на любом другом месте.
Расширение: добавление нескольких полей и валидация
Если нужно добавить несколько полей, просто расширьте HTML форму и добавьте обработку каждого из них в функцию сохранения. Рекомендуется также добавить серверную валидацию и фильтрацию данных для безопасности.
Пример расширения формы с двумя полями:
function wpconsult_add_custom_user_profile_fields($user) {
?>
<h3>Дополнительная информация</h3>
<table class="form-table">
<tr>
<th><label for="wpconsult_phone">Телефон</label></th>
<td>
<input type="text" name="wpconsult_phone" id="wpconsult_phone" value="<?php echo esc_attr(get_the_author_meta('wpconsult_phone', $user->ID)); ?>" class="regular-text" />
</td>
</tr>
<tr>
<th><label for="wpconsult_position">Должность</label></th>
<td>
<input type="text" name="wpconsult_position" id="wpconsult_position" value="<?php echo esc_attr(get_the_author_meta('wpconsult_position', $user->ID)); ?>" class="regular-text" />
</td>
</tr>
</table>
<?php
}
add_action('show_user_profile', 'wpconsult_add_custom_user_profile_fields');
add_action('edit_user_profile', 'wpconsult_add_custom_user_profile_fields');
function wpconsult_save_custom_user_profile_fields($user_id) {
if (!current_user_can('edit_user', $user_id)) {
return false;
}
if (isset($_POST['wpconsult_phone'])) {
update_user_meta($user_id, 'wpconsult_phone', sanitize_text_field($_POST['wpconsult_phone']));
}
if (isset($_POST['wpconsult_position'])) {
update_user_meta($user_id, 'wpconsult_position', sanitize_text_field($_POST['wpconsult_position']));
}
}
add_action('personal_options_update', 'wpconsult_save_custom_user_profile_fields');
add_action('edit_user_profile_update', 'wpconsult_save_custom_user_profile_fields');Такой подход даёт полную свободу и не нагружает сайт лишними плагинами.
Полезные плагины для расширения профиля пользователя
Если же вы хотите более сложные решения с минимальной кодировкой, можно рассмотреть плагины:
- User Meta Manager — простой менеджер пользовательских полей.
- Clearfy Pro — оптимизация и расширение функционала WordPress, включая работу с профилями.
Однако самостоятельное добавление полей через код часто предпочтительнее с точки зрения производительности и безопасности.
Итог
Добавление дополнительных полей в профиль пользователя WordPress без плагинов — простая задача, если использовать хуки для вывода и сохранения данных. Такой подход позволяет хранить любую дополнительную информацию и использовать её в шаблонах сайта.
Используйте приведённые примеры кода как базу для своих решений, расширяйте их под конкретные задачи и контролируйте качество данных через валидацию.