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

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

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

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

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

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

Как создать пользовательские настройки с помощью пользовательских полей

Самый простой способ — использовать пользовательские мета-поля (user meta). WordPress предоставляет API для сохранения и получения произвольных данных пользователя.

Добавление полей в профиль пользователя

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

function wponline_show_color_scheme_field($user) {
    $color = get_user_meta($user->ID, 'wponline_color_scheme', true);
    ?>
    <h3>Настройки персонализации</h3>
    <table class="form-table">
        <tr>
            <th><label for="wponline_color_scheme">Цветовая схема</label></th>
            <td>
                <select name="wponline_color_scheme" id="wponline_color_scheme">
                    <option value="light" <?php selected($color, 'light'); ?>>Светлая</option>
                    <option value="dark" <?php selected($color, 'dark'); ?>>Тёмная</option>
                </select>
            </td>
        </tr>
    </table>
    <?php
}
add_action('show_user_profile', 'wponline_show_color_scheme_field');
add_action('edit_user_profile', 'wponline_show_color_scheme_field');

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

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

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

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

Как вывести пользовательские настройки на фронтенде

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

Пример создания формы на фронтенде

Допустим, у вас есть страница "Мой профиль" с шорткодом [wponline_user_settings]. Вот пример реализации шорткода:

function wponline_user_settings_shortcode() {
    if (!is_user_logged_in()) {
        return '<p>Пожалуйста, авторизуйтесь для изменения настроек.</p>';
    }
    $user_id = get_current_user_id();
    $color_scheme = get_user_meta($user_id, 'wponline_color_scheme', true) ?: 'light';

    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['wponline_color_scheme'])) {
        check_admin_referer('wponline_save_settings');
        update_user_meta($user_id, 'wponline_color_scheme', sanitize_text_field($_POST['wponline_color_scheme']));
        echo '<p>Настройки сохранены.</p>';
        $color_scheme = sanitize_text_field($_POST['wponline_color_scheme']);
    }

    ob_start();
    ?>
    <form method="post">
        <label for="wponline_color_scheme">Цветовая схема:</label>
        <select name="wponline_color_scheme" id="wponline_color_scheme">
            <option value="light" <?php selected($color_scheme, 'light'); ?>>Светлая</option>
            <option value="dark" <?php selected($color_scheme, 'dark'); ?>>Тёмная</option>
        </select>
        <?php wp_nonce_field('wponline_save_settings'); ?>
        <input type="submit" value="Сохранить" />
    </form>
    <?php
    return ob_get_clean();
}
add_shortcode('wponline_user_settings', 'wponline_user_settings_shortcode');

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

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

Если не хочется писать всё самостоятельно, можно использовать плагин Clearfy. Он позволяет оптимизировать и кастомизировать множество аспектов WordPress, включая управление пользовательскими мета-полями.

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

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

Работая с пользовательскими данными, обязательно проверяйте права доступа. Используйте функции current_user_can() и nonce-поля для защиты форм.

Также подумайте о валидации и очистке вводимых данных с помощью sanitize_text_field() и других функций WordPress для безопасности и предотвращения XSS-атак.

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

Выводы и расширения

Добавление пользовательских настроек в личный кабинет — важный этап кастомизации сайта на WordPress. С помощью пользовательских мета-полей и стандартных хуков можно реализовать практически любые задачи.

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

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

Как создать собственный виджет в WordPress
20.11.2025
Как сделать автоматическое удаление старых продуктов в WooCommerce
30.12.2025
Оптимизация загрузки изображений в WordPress с помощью ленивой загрузки (lazy load)
23.12.2025
Авторизация по телефону в WordPress: пошаговое руководство
03.11.2025
Как автоматизировать и контролировать запуски WP-Cron в WordPress
19.03.2026