Добавление полей в профиль пользователя WordPress: подробное руководство

В стандартном профиле пользователя WordPress есть ограниченный набор полей, которые могут не покрывать все потребности вашего проекта. Например, вы хотите добавить поле с номером телефона, ссылку на соцсети или дополнительные настройки, которые пользователь должен заполнить. В этой статье мы подробно разберём, как добавить свои поля в профиль пользователя WordPress, как сохранить данные и вывести их на сайте.

Почему стоит добавлять дополнительные поля в профиль пользователя WordPress

Иногда стандартных данных пользователя недостаточно для полноценной работы сайта. Дополнительные поля позволяют расширить функционал, например, организовать контактную базу, настроить персонализацию контента или добавить метаданные для авторов и участников сайта. Все эти данные хранятся в пользовательских метаполях (user meta), что обеспечивает гибкость и простоту работы.

Добавление полей в профиль особенно актуально для сайтов с регистрацией, форумов, магазинов и корпоративных порталов.

Рассмотрим, как добавить эти поля без плагинов, используя стандартные хуки WordPress, а также приведём пример с популярным плагином Advanced Custom Fields (ACF) для наглядности.

Как добавить собственные поля в профиль пользователя WordPress без плагинов

Добавляем поле в форму профиля с помощью хука show_user_profile

Для вывода нового поля в форме профиля пользователя есть два хука: show_user_profile (для собственного профиля) и edit_user_profile (для редактирования профиля другого пользователя администратором).

Пример кода для добавления поля "Номер телефона":

function wptask_add_custom_user_profile_fields($user) {
    ?>
    <h3>Дополнительная информация</h3>
    <table class="form-table">
        <tr>
            <th><label for="phone">Номер телефона</label></th>
            <td>
                <input type="text" name="phone" id="phone" value="<?php echo esc_attr(get_user_meta($user->ID, 'phone', true)); ?>" class="regular-text" /><br />
                <span class="description">Пожалуйста, введите ваш номер телефона.</span>
            </td>
        </tr>
    </table>
    <?php
}
add_action('show_user_profile', 'wptask_add_custom_user_profile_fields');
add_action('edit_user_profile', 'wptask_add_custom_user_profile_fields');

Сохраняем данные поля при обновлении профиля

Чтобы сохранить данные, используем хуки personal_options_update и edit_user_profile_update. Они срабатывают при сохранении профиля.

function wptask_save_custom_user_profile_fields($user_id) {
    if (!current_user_can('edit_user', $user_id)) {
        return false;
    }
    if (isset($_POST['phone'])) {
        update_user_meta($user_id, 'phone', sanitize_text_field($_POST['phone']));
    }
}
add_action('personal_options_update', 'wptask_save_custom_user_profile_fields');
add_action('edit_user_profile_update', 'wptask_save_custom_user_profile_fields');

Выводим дополнительное поле на сайте

Чтобы использовать данные из пользовательского профиля, например, вывести номер телефона автора поста, можно получить мета-значение с помощью функции get_user_meta.

$author_id = get_the_author_meta('ID');
$phone = get_user_meta($author_id, 'phone', true);
echo 'Телефон автора: ' . esc_html($phone);

Так можно вывести любую дополнительную информацию из профиля пользователя в шаблоне темы.

Использование плагина Advanced Custom Fields (ACF) для создания полей профиля

Если вы предпочитаете не писать код, можно воспользоваться плагином Advanced Custom Fields. Он позволяет удобно создавать поля в админке и отображать их.

Шаги:

  • Установите и активируйте плагин ACF.
  • Создайте новую группу полей и установите правило показа «Пользователь» -> «Роль» или «Профиль пользователя».
  • Добавьте нужные поля — текстовые, телефон, селекты и другие.
  • Для вывода используйте функцию get_field('имя_поля', 'user_'. $user_id);

Пример кода вывода поля «phone» созданного через ACF:

$user_id = get_current_user_id();
$phone = get_field('phone', 'user_' . $user_id);
echo 'Телефон: ' . esc_html($phone);

Обработка ошибок и валидация пользовательских данных

Важно не только сохранить данные, но и проверить их корректность. Например, для телефона можно проверить формат с помощью регулярного выражения.

function wptask_validate_phone($phone) {
    return preg_match('/^\+?[0-9\s\-\(\)]+$/', $phone);
}

function wptask_save_custom_user_profile_fields($user_id) {
    if (!current_user_can('edit_user', $user_id)) {
        return false;
    }
    if (isset($_POST['phone'])) {
        $phone = sanitize_text_field($_POST['phone']);
        if (wptask_validate_phone($phone)) {
            update_user_meta($user_id, 'phone', $phone);
        } else {
            // Можно добавить уведомление об ошибке
        }
    }
}

Так вы убережёте базу данных от некорректных или вредоносных данных.

Итог: что вы получите

  • Удобный интерфейс для ввода дополнительных данных пользователя в админке.
  • Гибкость хранения и использования пользовательских метаданных.
  • Возможность расширять профиль под любые задачи сайта.

Данный способ отлично подходит для кастомных проектов, где нужно больше информации о пользователях, чем предлагает WordPress по умолчанию.

Как создать автоматические резервные копии WordPress: плагины и код
21.11.2025
Автоматический импорт пользователей в WordPress через CSV с примером кода
18.01.2026
Добавление пользовательских полей в WP REST API для пользователей WordPress
19.03.2026
Как создать nestable список в WordPress с помощью плагинов и кода
01.11.2025
Автоматическое удаление неоплаченных заказов в WooCommerce
13.05.2026