В WordPress стандартный набор свойств пользователя ограничен базовыми полями, такими как имя, email, роль и т.д. Но часто для проектов требуется добавить свои свойства пользователя — например, телефон, дополнительный адрес, дату рождения, социальные сети и многое другое. Лучший способ это сделать — использовать пользовательские мета-поля (user meta), которые позволяют хранить любые данные, связанные с пользователем.
Что такое пользовательские мета-поля в WordPress и зачем они нужны
Пользовательские мета-поля — это произвольные данные, которые можно связать с конкретным пользователем в базе данных WordPress. Они хранятся в таблице wp_usermeta, что дает гибкость в добавлении новых свойств без изменения структуры базы.
Используя мета-поля, вы можете расширять профиль пользователя, добавлять поля, которые нужны именно вашему сайту, и легко получать доступ к этим данным в шаблонах, плагинах и функциях.
Например, если вы хотите добавить номер телефона, вы просто создаете мета-поле с ключом phone_number и сохраняете туда значение. В дальнейшем вы сможете вывести это поле в личном кабинете, в админке или использовать в логике сайта.
Как создать и сохранить пользовательские мета-поля с помощью кода
Добавление и сохранение пользовательских мета-полей требует работы с хуками WordPress. Рассмотрим пример, как добавить поле "Телефон" на страницу редактирования пользователя в админке и сохранить его.
Добавление поля в профиль пользователя (админка WordPress)
Для этого используем хук show_user_profile и edit_user_profile для отображения поля, и personal_options_update, edit_user_profile_update для сохранения.
function wpsync_add_phone_field($user) {
?>
<h3>Дополнительные свойства пользователя</h3>
<table class="form-table">
<tr>
<th><label for="phone_number">Телефон</label></th>
<td>
<input type="text" name="phone_number" id="phone_number" value="<?php echo esc_attr(get_user_meta($user->ID, 'phone_number', true)); ?>" class="regular-text" />
<p class="description">Введите номер телефона пользователя.</p>
</td>
</tr>
</table>
<?php
}
add_action('show_user_profile', 'wpsync_add_phone_field');
add_action('edit_user_profile', 'wpsync_add_phone_field');Сохранение значения пользовательского поля
function wpsync_save_phone_field($user_id) {
if (!current_user_can('edit_user', $user_id)) {
return false;
}
if (isset($_POST['phone_number'])) {
update_user_meta($user_id, 'phone_number', sanitize_text_field($_POST['phone_number']));
}
}
add_action('personal_options_update', 'wpsync_save_phone_field');
add_action('edit_user_profile_update', 'wpsync_save_phone_field');Таким образом, вы расширили профиль пользователя новым полем и обеспечили сохранение данных.
Вывод пользовательских мета-полей на сайте и в шаблонах
После того как данные сохранены, их нужно вывести на сайте — например, в профиле пользователя на фронтенде, в шаблонах темы или при формировании писем.
Для получения значения используется функция get_user_meta. Пример вывода телефона текущего пользователя:
$user_id = get_current_user_id();
$phone = get_user_meta($user_id, 'phone_number', true);
echo 'Телефон: ' . esc_html($phone);Так можно использовать любое пользовательское мета-поле.
Использование плагинов для управления пользовательскими мета-полями
Если не хотите писать код, можно использовать готовые плагины для добавления пользовательских полей в профиль:
- Clearfy Pro — мощный инструмент оптимизации и управления, в том числе позволяет добавлять пользовательские поля;
- Advanced Custom Fields (ACF) — популярный плагин для создания произвольных полей, в том числе и для пользователей;
- User Meta — специализированный плагин для управления пользовательскими мета-полями.
Плагины значительно упрощают задачу, дают удобный интерфейс и дополнительный функционал, например, валидацию и настройку отображения.
Расширение функционала: валидация и безопасность данных пользовательских свойств
Очень важно не только сохранить данные, но и проверить их корректность. В примере выше мы использовали sanitize_text_field для очистки строки. В реальных проектах стоит делать более строгую валидацию — например, проверять формат телефона с помощью регулярных выражений.
Также рекомендуем использовать nonce-поля для защиты от CSRF-атак при сохранении данных, особенно если добавляете поля не только в админку, но и на фронтенде.
Пример добавления nonce и проверки
function wpsync_add_phone_field($user) {
wp_nonce_field('wpsync_save_phone', 'wpsync_phone_nonce');
// остальной код поля...
}
function wpsync_save_phone_field($user_id) {
if (!isset($_POST['wpsync_phone_nonce']) || !wp_verify_nonce($_POST['wpsync_phone_nonce'], 'wpsync_save_phone')) {
return false;
}
// проверка прав и сохранение
}Вывод: расширяем профиль пользователя под свои задачи
Пользовательские мета-поля — это мощный инструмент для гибкого расширения данных пользователей в WordPress. Они позволяют хранить любые дополнительные свойства, легко интегрируются в админку и шаблоны, а также управляются как кодом, так и плагинами.
Если вы хотите быстро и удобно создавать собственные поля, советую попробовать Clearfy Pro, который помимо прочего расширит возможности управления пользователями и оптимизации сайта.