Чтобы вставить wp_error
внизу формы в WordPress, вам необходимо выполнить несколько шагов. Возьмем за пример форму регистрации пользователя.
1. Создайте функцию обработки формы
Первым шагом является создание функции, которая будет обрабатывать данные формы и проверять ошибки. Например:
function process_registration_form() { $errors = new WP_Error(); // Проверка полей формы if (empty($_POST['username'])) { $errors->add('username_error', 'Please enter a username.'); } if (empty($_POST['password'])) { $errors->add('password_error', 'Please enter a password.'); } // Другие проверки полей формы // Если ошибки есть, выводим их if ($errors->get_error_code()) { // Выводим ошибки с помощью функции wp_nonce_error() wp_nonce_error('registration_error', 'registration_nonce'); } else { // Если ошибок нет, продолжаем обработку формы // Код для сохранения пользователя, отправки электронной почты и т. д. } }
2. Вставьте форму
Вставьте форму регистрации в нужное место на странице, например, используя шорткод или вызывая функцию в шаблоне WordPress.
function registration_form_shortcode() { ob_start(); // Выводите форму регистрации здесь ?> <form method="post" action=""> <!-- Поля формы --> <input type="text" name="username" /> <input type="password" name="password" /> <!-- Кнопка отправки формы --> <input type="submit" value="Register" /> </form> <?php return ob_get_clean(); } add_shortcode('registration_form', 'registration_form_shortcode');
3. Обработка формы
Добавьте обработчик формы к хуку загрузки страницы или другому подходящему хуку в WordPress.
function process_registration_form_on_load() { if (isset($_POST['registration_nonce']) && wp_verify_nonce($_POST['registration_nonce'], 'registration_error')) { process_registration_form(); } } add_action('template_redirect', 'process_registration_form_on_load');
4. Вывод ошибок
Для вывода ошибок на форме по мере их возникновения вам пере нужно изменить функцию, выводящую форму:
function registration_form_shortcode() { ob_start(); // Вывод ошибок echo wp_kses_post( wp_nonce_field( 'registration_error', 'registration_nonce', false, false ) ); echo wp_kses_post( $errors->get_error_message('username_error') ); echo wp_kses_post( $errors->get_error_message('password_error') ); // Вывод формы регистрации ?> <form method="post" action=""> <!-- Поля формы --> <input type="text" name="username" /> <input type="password" name="password" /> <!-- Кнопка отправки формы --> <input type="submit" value="Register" /> </form> <?php return ob_get_clean(); } add_shortcode('registration_form', 'registration_form_shortcode');
Теперь, когда пользователь отправляет форму с неправильно заполненными полями, ошибки будут отображаться ниже формы регистрации. Если ошибок нет, код для сохранения пользователя и отправки электронной почты или другие действия могут быть добавлены перед возвратом функции ob_get_clean()
.