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

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

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

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

Основные шаги для добавления дополнительных полей профиля

Чтобы добавить новые поля в профиль пользователя, нужно:

  • Использовать хуки WordPress show_user_profile и edit_user_profile для отображения полей в админке.
  • Использовать хуки personal_options_update и edit_user_profile_update для сохранения данных при обновлении профиля.
  • Обеспечить валидацию и безопасность данных, например, проверять права пользователя и использовать функции очистки данных.

Рассмотрим каждый шаг подробнее с примерами.

Добавление дополнительных полей в форму редактирования профиля

Для вывода новых полей в административной части WordPress нужно повесить функцию на хуки show_user_profile и edit_user_profile. Функция должна вывести HTML поля ввода. Пример ниже добавляет поле "Должность":

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

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

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

Чтобы сохранить введённые данные, нужно обработать их при сохранении профиля пользователя. Для этого используем хуки personal_options_update и edit_user_profile_update. В функции проверяем права пользователя и используем update_user_meta для записи данных в базу.

function wplist_save_custom_user_profile_fields($user_id) {
    // Проверка прав
    if (!current_user_can('edit_user', $user_id)) {
        return false;
    }
    // Проверка, что поле передано и очистка данных
    if (isset($_POST['wplist_position'])) {
        $position = sanitize_text_field($_POST['wplist_position']);
        update_user_meta($user_id, 'wplist_position', $position);
    }
}
add_action('personal_options_update', 'wplist_save_custom_user_profile_fields');
add_action('edit_user_profile_update', 'wplist_save_custom_user_profile_fields');

Так мы надёжно сохраняем данные и защищаемся от нежелательных изменений.

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

После того, как данные сохраняются, их можно вывести на сайте в любом месте. Например, в шаблоне темы для профиля пользователя можно написать:

$user_id = get_the_author_meta('ID');
$position = get_user_meta($user_id, 'wplist_position', true);
if ($position) {
    echo '<p><strong>Должность:</strong> ' . esc_html($position) . '</p>';
}

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

Добавление нескольких дополнительных полей: пример с социальными сетями

Если нужно добавить сразу несколько полей, например, для социальных сетей, код можно расширить. Создадим поля для Facebook, Twitter и Instagram:

function wplist_add_social_user_profile_fields($user) {
    $socials = [
        'facebook' => 'Facebook',
        'twitter' => 'Twitter',
        'instagram' => 'Instagram'
    ];
    ?>
    <h3>Социальные сети</h3>
    <table class="form-table">
        <?php foreach ($socials as $key => $label): ?>
        <tr>
            <th><label for="wplist_<?php echo $key; ?>"><?php echo $label; ?></label></th>
            <td>
                <input type="url" name="wplist_<?php echo $key; ?>" id="wplist_<?php echo $key; ?>" value="<?php echo esc_attr(get_the_author_meta('wplist_' . $key, $user->ID)); ?>" class="regular-text" /><br />
                <span class="description">Введите URL профиля в <?php echo $label; ?>.</span>
            </td>
        </tr>
        <?php endforeach; ?>
    </table>
    <?php
}
add_action('show_user_profile', 'wplist_add_social_user_profile_fields');
add_action('edit_user_profile', 'wplist_add_social_user_profile_fields');

function wplist_save_social_user_profile_fields($user_id) {
    if (!current_user_can('edit_user', $user_id)) {
        return false;
    }
    $socials = ['facebook', 'twitter', 'instagram'];
    foreach ($socials as $key) {
        if (isset($_POST['wplist_' . $key])) {
            $url = esc_url_raw($_POST['wplist_' . $key]);
            update_user_meta($user_id, 'wplist_' . $key, $url);
        }
    }
}
add_action('personal_options_update', 'wplist_save_social_user_profile_fields');
add_action('edit_user_profile_update', 'wplist_save_social_user_profile_fields');

Такой подход легко масштабируется и упрощает поддержку кода.

Использование плагинов для расширения профиля пользователя

Если вы хотите быстро добавить расширенные поля без программирования, есть популярные плагины:

  • Advanced Custom Fields (ACF) — мощный плагин для добавления кастомных полей, в том числе и для профиля пользователя.
  • User Meta Manager — специализированный плагин для управления дополнительными полями в профилях.
  • Clearfy Pro — плагин оптимизации, который также включает удобные инструменты для управления пользовательскими данными.

Однако программное добавление полей даёт большую гибкость и меньше нагружает сайт сторонним кодом.

Советы по безопасности и производительности

При добавлении пользовательских полей важно помнить:

  • Проверяйте права пользователя перед сохранением данных.
  • Используйте функции очистки данных, например, sanitize_text_field или esc_url_raw.
  • Избегайте конфликтов имён, добавляя префиксы к именам функций и метаданных.
  • Минимизируйте нагрузку, не добавляйте в профиль слишком много полей без необходимости.

Это повысит безопасность сайта и улучшит стабильность.

Заключение: практическое применение на проекте WPList.ru

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

Если вы хотите расширить возможности своего проекта, рекомендую изучить плагины, например, Clearfy Pro для оптимизации и управления данными, а для кастомных сценариев — использовать кодовые примеры из этой статьи.

WooCommerce: как автоматически удалять заказы после отмены оплаты
17.05.2026
Упаковка данных в WordPress для оптимизации базы данных
26.01.2026
Автоматический импорт продуктов в WooCommerce через WP REST API
28.12.2025
Как отключить pingbacks и trackbacks в WordPress
12.01.2026
WooCommerce: как настроить авторизацию по email вместо логина
02.05.2026