Хук register_form
позволяет добавлять пользовательские поля и элементы в стандартную форму регистрации WordPress. Это полезно для сайтов, которым требуется дополнительная информация от пользователей при регистрации. Важно учитывать, что добавленные поля нужно валидировать и сохранять отдельно, так как WordPress по умолчанию этого не делает.
Хук register_form
срабатывает после стандартного поля для ввода Email в форме регистрации на странице wp-login.php
. С его помощью можно добавлять любые HTML-элементы, инструкции или дополнительные поля.
do_action( 'register_form' );
Пример 1: Добавление пользовательского текстового поля в форму регистрации
Этот код добавляет новое текстовое поле в форму регистрации, которое выводится после стандартного поля Email. Обратите внимание, что данные из этого поля не будут автоматически сохранены, и для их обработки нужны дополнительные шаги.
<?php
add_action( 'register_form', 'add_custom_text_field_to_registration' );
function add_custom_text_field_to_registration() {
$custom_field = isset( $_POST['custom_field'] ) ? sanitize_text_field( $_POST['custom_field'] ) : '';
?>
<p>
<label for="custom_field"><?php _e( 'Favorite Hobby', 'textdomain' ); ?><br />
<input type="text" name="custom_field" id="custom_field" class="input" value="<?php echo esc_attr( $custom_field ); ?>" size="25" /></label>
</p>
<?php
}
Пример 2: Добавление флажка согласия на обработку данных
Флажок согласия на обработку персональных данных является частым требованием для многих сайтов. Этот пример добавляет чекбокс, который пользователь должен отметить, чтобы продолжить регистрацию.
<?php
add_action( 'register_form', 'add_privacy_policy_checkbox' );
function add_privacy_policy_checkbox() {
?>
<p>
<label for="privacy_policy">
<input type="checkbox" name="privacy_policy" id="privacy_policy" value="1" <?php checked( isset( $_POST['privacy_policy'] ), 1 ); ?> />
<?php _e( 'I agree to the Privacy Policy', 'textdomain' ); ?>
</label>
</p>
<?php
}
Для проверки и обработки этого поля можно использовать хук registration_errors
.
Пример 3: Добавление выпадающего списка с выбором страны
Чтобы пользователи могли указать свою страну, можно добавить в форму регистрации выпадающий список.
<?php
add_action( 'register_form', 'add_country_select_to_registration' );
function add_country_select_to_registration() {
$selected_country = isset( $_POST['country'] ) ? sanitize_text_field( $_POST['country'] ) : '';
?>
<p>
<label for="country"><?php _e( 'Country', 'textdomain' ); ?><br />
<select name="country" id="country">
<option value=""><?php _e( 'Select Country', 'textdomain' ); ?></option>
<option value="us" <?php selected( $selected_country, 'us' ); ?>><?php _e( 'United States', 'textdomain' ); ?></option>
<option value="ca" <?php selected( $selected_country, 'ca' ); ?>><?php _e( 'Canada', 'textdomain' ); ?></option>
<option value="uk" <?php selected( $selected_country, 'uk' ); ?>><?php _e( 'United Kingdom', 'textdomain' ); ?></option>
</select>
</label>
</p>
<?php
}
Пример 4: Добавление приветственного сообщения в форму регистрации
Если необходимо мотивировать пользователей зарегистрироваться, можно добавить простое приветственное сообщение, приветствуя нового пользователя.
<?php
add_action( 'register_form', 'add_welcome_message_to_registration_form' );
function add_welcome_message_to_registration_form() {
echo '<div style="margin: 15px 0; font-size: 16px; color: #333;">';
_e( 'Welcome! Join us and be a part of our community!', 'textdomain' );
echo '</div>';
}
Валидация и сохранение данных
Так как register_form
отвечает только за вывод дополнительных полей, для валидации и сохранения данных используйте другие хуки:
registration_errors
— для проверки введенных данных и вывода ошибок.register_post
— для сохранения дополнительных данных в профиле пользователя после успешной регистрации.
Пример валидации поля согласия на обработку данных:
<?php
add_filter( 'registration_errors', 'validate_privacy_policy_checkbox', 10, 3 );
function validate_privacy_policy_checkbox( $errors, $sanitized_user_login, $user_email ) {
if ( empty( $_POST['privacy_policy'] ) ) {
$errors->add( 'privacy_policy_error', __( 'You must agree to the Privacy Policy.', 'textdomain' ) );
}
return $errors;
}
Заключение
Хук register_form
предоставляет широкие возможности для кастомизации страницы регистрации в WordPress. С его помощью можно добавлять различные поля и сообщения, что делает процесс регистрации более гибким и адаптированным к нуждам вашего сайта.