LearnPress – это мощный плагин для создания онлайн-курсов на WordPress. Часто возникает потребность расширить стандартную форму регистрации пользователей, добавив дополнительные поля, чтобы собирать важную информацию, например, номер телефона, должность или город. В этой статье мы подробно разберем, как добавить новые поля в форму регистрации LearnPress, а также как корректно обрабатывать и сохранять эти данные.
Почему стоит добавить дополнительные поля в форму регистрации LearnPress
Стандартная форма регистрации LearnPress содержит минимальный набор полей: имя пользователя, email и пароль. Но в реальной практике образовательных проектов часто нужно получить больше информации для персонализации обучения, маркетинга или администрирования.
Например, для корпоративного обучения важно знать отдел сотрудника, для языковых курсов – уровень владения языком, а для локальных мероприятий – город проживания. Добавление таких полей позволяет улучшить управление пользователями и качество поддержки.
Кроме того, многие организации требуют согласие с политикой конфиденциальности или дополнительное подтверждение, что тоже можно реализовать через новые поля в форме.
Как добавить новые поля в форму регистрации LearnPress: технический подход
LearnPress использует стандартные хуки WordPress и свои фильтры, что позволяет расширять регистрацию без изменения исходного кода плагина. Чтобы добавить поле, нужно:
- Вывести новое поле в форме регистрации с помощью фильтра.
- Обработать данные, введенные пользователем, при отправке формы.
- Сохранить данные в мета-поле пользователя.
- При необходимости отобразить данные в профиле пользователя.
Рассмотрим пример добавления поля «Телефон».
Добавление поля «Телефон» в форму регистрации
Сначала выводим поле в форме регистрации с помощью фильтра learn_press_user_register_fields:
add_filter('learn_press_user_register_fields', 'learnpress_add_phone_field_to_registration');
function learnpress_add_phone_field_to_registration($fields) {
$fields['phone'] = array(
'type' => 'text',
'label' => __('Телефон', 'learnpress'),
'placeholder' => __('Введите ваш номер телефона', 'learnpress'),
'required' => true,
);
return $fields;
}
Этот код добавит новое текстовое поле с обязательным заполнением.
Валидация и обработка новых данных
После того, как пользователь отправит форму, необходимо проверить введенный телефон и сохранить его. Для этого используем действие learn_press_user_register:
add_action('learn_press_user_register', 'learnpress_save_phone_field', 10, 2);
function learnpress_save_phone_field($user_id, $data) {
if (!empty($data['phone'])) {
// Простая валидация: только цифры, пробелы, + и -
$phone = sanitize_text_field($data['phone']);
if (preg_match('/^[\d\s\+\-\(\)]+$/', $phone)) {
update_user_meta($user_id, 'learnpress_phone', $phone);
}
}
}
В этом коде мы проверяем, что поле заполнено и соответствует простому шаблону, после чего сохраняем его в мета-поле пользователя с ключом learnpress_phone.
Отображение дополнительного поля в профиле пользователя
Для удобства администратора и самого пользователя полезно видеть и редактировать эти данные в профиле. Добавим поле в административный профиль WordPress:
add_action('show_user_profile', 'learnpress_show_phone_field');
add_action('edit_user_profile', 'learnpress_show_phone_field');
function learnpress_show_phone_field($user) {
$phone = get_user_meta($user->ID, 'learnpress_phone', true);
?>
<h3><?php _e('Дополнительные данные LearnPress', 'learnpress'); ?></h3>
<table class="form-table">
<tr>
<th><label for="learnpress_phone"><?php _e('Телефон'); ?></label></th>
<td>
<input type="text" name="learnpress_phone" id="learnpress_phone" value="<?php echo esc_attr($phone); ?>" class="regular-text" /><br />
<span class="description"><?php _e('Введите номер телефона пользователя.'); ?></span>
</td>
</tr>
</table>
<?php
}
add_action('personal_options_update', 'learnpress_save_phone_field_profile');
add_action('edit_user_profile_update', 'learnpress_save_phone_field_profile');
function learnpress_save_phone_field_profile($user_id) {
if (!current_user_can('edit_user', $user_id)) {
return false;
}
if (!empty($_POST['learnpress_phone'])) {
update_user_meta($user_id, 'learnpress_phone', sanitize_text_field($_POST['learnpress_phone']));
}
}
Теперь администратор или сам пользователь могут видеть и редактировать номер телефона в профиле.
Полезные советы и лучшие практики
Добавление дополнительных полей требует внимательности, чтобы не нарушить логику плагина и не снизить удобство пользователей. Вот несколько рекомендаций:
- Валидация данных. Проверяйте корректность введенных данных, чтобы избежать ошибок и спама.
- Обязательные и необязательные поля. Четко определяйте, какие поля обязательны, а какие – для дополнительной информации.
- Локализация. Используйте функции перевода
__()и_e()для поддержки разных языков. - Безопасность. Используйте функции очистки данных, такие как
sanitize_text_field()и проверяйте права пользователя при сохранении данных. - Совместимость. Тестируйте изменения с другими плагинами и темами, особенно с теми, что влияют на регистрацию и профиль.
Альтернативные плагины для расширения формы регистрации в LearnPress
Если нужна более сложная форма регистрации с большим количеством полей и логикой, можно использовать сторонние плагины, совместимые с LearnPress:
- WP User Frontend – позволяет создавать кастомные формы регистрации с любой структурой.
- Profile Builder – мощный плагин для управления регистрацией и профилями пользователей.
- Gravity Forms + Gravity Forms User Registration Add-On – для продвинутых форм с гибкой логикой и интеграцией.
В таких случаях LearnPress можно настроить на автоматическую регистрацию пользователя после заполнения кастомной формы.
Подведение итогов и возможности для развития
Добавление дополнительных полей в форму регистрации LearnPress существенно расширяет возможности сбора данных о пользователях и персонализации обучения. С помощью приведенных примеров кода вы легко сможете внедрить новые поля и обеспечить их правильную обработку.
Дальнейшие шаги могут включать интеграцию с CRM, автоматическую рассылку приветственных писем с учетом новых данных, а также создание отчетов и сегментацию пользователей по дополнительным параметрам.