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

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

Что такое пользовательские свойства и зачем они нужны

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

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

Добавление новых полей в профиль пользователя (h3) — хук show_user_profile и edit_user_profile

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

Пример добавления поля «Телефон»:

function wpsync_add_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', 'wpsync_add_user_profile_fields');
add_action('edit_user_profile', 'wpsync_add_user_profile_fields');

Этот код добавляет поле «Телефон» в профиль пользователя.

Сохранение пользовательских свойств (h3) — хуки personal_options_update и edit_user_profile_update

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

Пример сохранения поля «Телефон»:

function wpsync_save_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', 'wpsync_save_user_profile_fields');
add_action('edit_user_profile_update', 'wpsync_save_user_profile_fields');

Обязательно проверяйте права пользователя, чтобы избежать проблем с безопасностью.

Вывод пользовательских свойств на сайте (h3) — использование get_user_meta

Чтобы вывести пользовательские свойства в шаблонах сайта, используется функция get_user_meta. Например, чтобы вывести телефон текущего пользователя:

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

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

Использование пользовательских свойств в фильтрах и запросах (h3) — WP_User_Query с метазапросами

Если необходимо получить список пользователей с определённым свойством, можно использовать класс WP_User_Query с параметром meta_query.

Пример выборки пользователей с телефоном, начинающимся на +7:

$args = [
    'meta_query' => [
        [
            'key' => 'phone',
            'value' => '+7',
            'compare' => 'LIKE'
        ]
    ]
];
$user_query = new WP_User_Query($args);
if (!empty($user_query->get_results())) {
    foreach ($user_query->get_results() as $user) {
        echo 'Пользователь: ' . $user->display_name . '<br>';
    }
} else {
    echo 'Пользователи не найдены.';
}

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

Советы по безопасности и валидации пользовательских свойств

При работе с пользовательскими данными очень важно правильно их фильтровать и валидировать. Для текстовых полей используйте sanitize_text_field, для email — sanitize_email, для URL — esc_url_raw и так далее.

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

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

Пример расширенного поля с валидацией и кастомным типом (h3) — Дата рождения

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

function wpsync_add_birthday_field($user) {
    $birthday = get_user_meta($user->ID, 'birthday', true);
    ?>
    <h3>Дата рождения</h3>
    <table class="form-table">
        <tr>
            <th><label for="birthday">Дата рождения</label></th>
            <td>
                <input type="date" name="birthday" id="birthday" value="<?php echo esc_attr($birthday); ?>" />
                <br /><span class="description">Введите дату рождения в формате ГГГГ-ММ-ДД.</span>
            </td>
        </tr>
    </table>
    <?php
}
add_action('show_user_profile', 'wpsync_add_birthday_field');
add_action('edit_user_profile', 'wpsync_add_birthday_field');

function wpsync_save_birthday_field($user_id) {
    if (!current_user_can('edit_user', $user_id)) {
        return false;
    }
    if (isset($_POST['birthday'])) {
        $date = $_POST['birthday'];
        // Простая проверка формата YYYY-MM-DD
        if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $date)) {
            update_user_meta($user_id, 'birthday', $date);
        } else {
            // Можно добавить обработку ошибки или игнорировать
        }
    }
}
add_action('personal_options_update', 'wpsync_save_birthday_field');
add_action('edit_user_profile_update', 'wpsync_save_birthday_field');

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

Резюме

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

Для повышения удобства можно создать отдельный мини-плагин или добавить код в файл functions.php вашей темы. Если нужна более мощная функциональность, тогда стоит рассмотреть специализированные плагины, например, Clearfy Pro, который оптимизирует работу сайта и расширяет возможности управления.

Как удалить неиспользуемые плагины в WordPress без риска для сайта
26.11.2025
Как сделать свойства контакта в WordPress в Contact Form 7
22.11.2025
Как сделать свойства пользователя в WordPress через пользовательские мета-поля
03.04.2026
Как удалить заблокированные аккаунты WordPress без риска
20.05.2026
Автоматическая синхронизация оповещений WordPress между сайтами
30.01.2026