Как добавить дополнительные поля на страницу авторизации WordPress с помощью кода

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

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

Чаще всего для расширения формы авторизации используют готовые плагины. Но у них есть свои минусы:

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

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

Как добавить новое поле на форму входа WordPress

Для добавления поля используем хук login_form. Он позволяет вставить HTML прямо в форму авторизации. Ниже пример, как добавить поле «Код доступа» с именем wpmax_access_code:

function wpmax_add_custom_login_field() {
    ?>
    <p>
        <label for="wpmax_access_code">Код доступа<br/>
        <input type="text" name="wpmax_access_code" id="wpmax_access_code" class="input" value="" size="20" /></label>
    </p>
    <?php
}
add_action('login_form','wpmax_add_custom_login_field');

Этот код добавит новое поле прямо под стандартными полями логина и пароля.

Валидация и обработка дополнительных полей при входе

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

function wpmax_authenticate_custom_field($user, $username, $password) {
    if ( isset($_POST['wpmax_access_code']) ) {
        $access_code = trim($_POST['wpmax_access_code']);
        if (empty($access_code) || $access_code !== 'secret123') {
            return new WP_Error('access_code_error', __('<strong>Ошибка:</strong> Неверный код доступа.'));
        }
    } else {
        return new WP_Error('access_code_error', __('<strong>Ошибка:</strong> Отсутствует код доступа.'));
    }
    return $user;
}
add_filter('authenticate', 'wpmax_authenticate_custom_field', 30, 3);

В этом примере мы проверяем, что код доступа равен строке secret123. При несоответствии пользователь увидит ошибку и не сможет войти.

Стилизация нового поля и улучшение UX

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

function wpmax_login_custom_styles() {
    ?>
    <style>
        #wpmax_access_code {
            width: 100%;
            box-sizing: border-box;
            margin-top: 5px;
        }
    </style>
    <?php
}
add_action('login_enqueue_scripts', 'wpmax_login_custom_styles');

Так поле будет адаптировано под ширину формы и станет удобнее для ввода.

Пример расширенного варианта: двухфакторная аутентификация с кодом из базы данных

Допустим, у вас есть пользовательское поле two_factor_code, сохранённое в метаданных пользователя. При входе нужно проверить, что введённый код совпадает с сохранённым.

function wpmax_authenticate_two_factor($user, $username, $password) {
    if (is_a($user, 'WP_User')) {
        if (isset($_POST['wpmax_two_factor_code'])) {
            $input_code = sanitize_text_field($_POST['wpmax_two_factor_code']);
            $saved_code = get_user_meta($user->ID, 'two_factor_code', true);
            if ($input_code !== $saved_code) {
                return new WP_Error('two_factor_error', __('<strong>Ошибка:</strong> Неверный код двухфакторной аутентификации.'));
            }
        } else {
            return new WP_Error('two_factor_error', __('<strong>Ошибка:</strong> Введите код двухфакторной аутентификации.'));
        }
    }
    return $user;
}
add_filter('authenticate', 'wpmax_authenticate_two_factor', 35, 3);

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

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

Добавляя поля на страницу авторизации, важно помнить:

  • Всегда используйте sanitize_text_field() или аналогичные функции для очистки данных.
  • Не храните секретные коды в открытом виде — лучше хэшируйте или храните временные токены.
  • Используйте wp_nonce_field() и проверяйте nonce для защиты от CSRF-атак, если добавляете более сложные формы.
  • Не выводите подробные ошибки, которые могут помочь злоумышленникам.

Заключение и полезные плагины для расширения авторизации

Хотя ручное добавление полей — отличный способ кастомизировать авторизацию, иногда удобнее использовать проверенные плагины. Например:

  • Clearfy Pro — содержит функции для улучшения входа и безопасности.
  • WPGPT — позволяет автоматизировать ответы, можно расширить возможности входа.

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

WooCommerce: как отключить сравнение товаров в личном кабинете
18.05.2026
Как сделать автоматический ответ на комментарии в WordPress
15.12.2025
Как удалить автоматические ревизии в WordPress для оптимизации базы данных
24.02.2026
Как избежать конфликтов между WooCommerce и кастомными плагинами в WordPress
19.04.2026
WooCommerce: как отключить автоматическое обновление статуса заказов
20.06.2026