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

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

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

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

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

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

Как добавить поле в профиль пользователя через функции в functions.php

Самый надежный и легкий способ — добавить код в файл functions.php вашей темы или в плагин с пользовательскими функциями. Рассмотрим пример, где мы добавим поле «Номер телефона» в профиль.

Добавление поля в форму профиля

Для начала нужно вывести новое поле на странице редактирования профиля. Используем хук show_user_profile и edit_user_profile, чтобы поле отображалось как для себя, так и для администратора:

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

Сохранение данных из дополнительного поля

Чтобы сохранить введенное значение, используем хук personal_options_update и edit_user_profile_update:

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

Таким образом, мы безопасно сохраняем новое поле в метаданных пользователя.

Использование плагинов для добавления кастомных полей в профиль пользователя

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

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

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

Как вывести новое поле в шаблонах и использовать в функционале сайта

После того как поле добавлено и сохранено, его можно вывести на сайте или использовать в бизнес-логике. Для получения значения используйте функцию get_user_meta():

$phone = get_user_meta($user_id, 'wpbloger_phone', true);
echo 'Телефон пользователя: ' . esc_html($phone);

Пример: вывести номер телефона авторов в шаблоне поста:

function wpbloger_show_author_phone() {
    $author_id = get_the_author_meta('ID');
    $phone = get_user_meta($author_id, 'wpbloger_phone', true);
    if ($phone) {
        echo '<p><strong>Телефон автора:</strong> ' . esc_html($phone) . '</p>';
    }
}
add_action('the_content', 'wpbloger_show_author_phone');

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

При работе с кастомными полями профиля важно учитывать следующие моменты:

  • Используйте функции очистки данных, например sanitize_text_field() или esc_attr(), чтобы избежать XSS и других уязвимостей.
  • Проверяйте права пользователя с помощью current_user_can(), чтобы запрещать неавторизованным пользователям изменять данные.
  • Для сложных типов данных используйте сериализацию или специализированные функции WordPress.
  • Тестируйте изменения на тестовом сайте перед публикацией в продакшен.
  • Следите за обновлениями WordPress и плагинов, чтобы не нарушать совместимость.

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

Кастомизация пунктов меню в админке WordPress: настройка и примеры кода
30.12.2025
Автоматическое удаление спама в комментариях WordPress
15.12.2025
Оптимизация загрузки картинок в WordPress: практические методы
26.11.2025
Удаление неиспользуемых метаданных в WordPress для оптимизации базы данных
17.11.2025
Как использовать фильтр YITH WooCommerce Wishlist для добавления собственных критериев
16.01.2026