wpconsult.ru wordpress WP Consult

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

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

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

Добавление дополнительного поля в форму профиля пользователя

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

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

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

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

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

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

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

Здесь мы проверяем права пользователя и сохраняем значение поля в метаданных пользователя.

Использование дополнительного поля в шаблонах сайта

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

$user_id = get_current_user_id();
$phone = get_user_meta($user_id, 'wpconsult_phone', true);
if ($phone) {
    echo '<p>Телефон пользователя: ' . esc_html($phone) . '</p>';
}

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

Расширение: добавление нескольких полей и валидация

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

Пример расширения формы с двумя полями:

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

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

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

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

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

  • User Meta Manager — простой менеджер пользовательских полей.
  • Clearfy Pro — оптимизация и расширение функционала WordPress, включая работу с профилями.

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

Итог

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

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее