Как отображать сообщения об ошибках с помощью класса WP_Error?
У меня есть код формы регистрации в файле functions.php
, который выглядит так:
if ('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['action']) && $_POST['action'] == 'registration') {
$error = new WP_Error();
if (empty(esc_attr($_POST['email'])))
{
$error->add('regerror','Электронная почта обязательна.');
}
if (!is_email(esc_attr($_POST['email'])))
{
$error->add('regerror','Неверный формат электронной почты.');
}
if (email_exists(esc_attr($_POST['email'])))
{
$error->add('regerror','Этот email уже используется. Забыли пароль? Если да, нажмите здесь для сброса.');
}
}
Может ли кто-нибудь подсказать, как отобразить эти сообщения об ошибках на моей странице регистрации
?
Обновление:
Моя страница регистрации содержит такой код:
<form method="post" action="<?php the_permalink(); ?>">
<!-- здесь идут поля формы -->
<input name="action" type="hidden" value="registration" />
<input type="submit" id="submit" value="Регистрация">
</form>

Если добавить это в functions.php
, вам, вероятно, придется объявить $error
как global
следующим образом:
if ('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['action']) && $_POST['action'] == 'registration') {
global $error;
$error = new WP_Error();
// остальная часть вашего кода
А затем снова использовать global $error;
на странице регистрации перед попыткой его использования.
Но я не понимаю, зачем вам этот код в functions.php
. Это кажется плохой практикой. Вы выполняете это условие if
каждый раз при загрузке любой страницы, а судя по всему, оно нужно только на странице регистрации, которую, как я предполагаю, вы написали сами, а не встроенную страницу регистрации/входа по адресу wp-login.php
. Если это так, просто перенесите этот код на страницу регистрации, и он будет доступен без лишних сложностей. WP_Error
имеет методы, которые позволят вам получить доступ к данным.
